-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsql triggers.txt
executable file
·35 lines (28 loc) · 1023 Bytes
/
sql triggers.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
trigger orderitemsdelete
delimiter $$
create trigger orderitemsdelete before delete on orders
for each row
begin
declare my_itemid,my_quantity int default 0;
declare done boolean default false;
declare orderitemscursor cursor for
select itemid,quantity from orderitems where orderid=old.orderid;
declare continue handler for not found set done=true;
open orderitemscursor;
read_loop: LOOP
fetch orderitemscursor into my_itemid,my_quantity;
if done then
leave read_loop;
end if;
update items set quantity=quantity+my_quantity where itemid=my_itemid;
end loop read_loop;
close orderitemscursor;
end$$
trigger orderitemsinsert
create trigger orderitemsinsert after insert on orderitems
for each row
update items set quantity=quantity-new.quantity where itemid=new.itemid;
trigger orderitemsupdate
create trigger orderitemsupdate before delete on orderitems
for each row
update items set quantity=quantity+old.quantity where itemid=old.itemid;