mysql中的觸發器以及存儲過程的基礎了解
觸發器(trigger):一觸即發,就是當進行某種操作之后(或者之前),附加的一種操作就馬上執行。
作用:監視某種情況并觸發某種操作;
注意事項:
能監視的事件:增,刪,改;能觸發的事件:增,刪,改;
監視地點:table
監視事件:insert/update/delete
觸發時間:after/before
觸發事件:insert/update/delete
建立商品表:
create table goods(goodsId int, name varchar(10), num int)charset utf8$
建立訂單表:
create table orders(ordersId int, goodsId int, num int)charset utf8$
插入數據
insert into goods values(1,'豬',22),(2,'羊',19),(3,'狗',12),(4,'貓',8)$
買三只羊
insert into orders values(1, 2, 3);
減少羊的庫存
update goods set num = num -3 where goodsId = 2;
開始學著使用觸發器
監視地點:orders
監視操作:insert
觸發操作:update
觸發時間:after
創建第一個觸發器
create trigger t1
after insert on orders
for each row
begin
update goods set num = num -3 where goodsId = 2;
end$
刪除觸發器
drop trigger t1$
創建第二個觸發器
create trigger t2
after insert on orders
for each row
begin
update goods set num = num - new.num where goodsId = new.goodsId;
end$
創建第三個觸發器
create trigger t3
after delete on orders
for each row
begin
update goods set num = num + old.num where goodsId = old.goodsId;
end$
創建第四個觸發器
create trigger t4
after update on orders
for each row
begin
update goods set num = num + old.num - new.num where goodsId = old.goodsId;
end$