Een cheque toegevoegd voor het bedrag aan het begin van de procedure, en verplaatst naar insert into transfers
voor update
verklaringen. Er zijn buitenlandse sleutels in transfers
tabel die verwijst naar account
tabel, dus als u probeert id
. in te voegen die niet bestaat, zal onmiddellijk mislukken.
delimiter //
create procedure transfer (amount int, note varchar(50), sending_account
int, receiving_account int)
this_proc:begin
start transaction;
if amount <= 0 then
leave this_proc;
end if;
insert into Transfers values
(TransfersID, amount, sending_account, receiving_account, note, now());
update Account as A
set A.amount = A.amount - amount
where A.AccountID = sending_account;
update Account as A
set A.amount = A.amount + amount
where A.AccountID = receiving_account;
commit work;
end //
delimiter ;