mysql中的觸發器以及存儲過程的基礎了解

openkk 12年前發布 | 17K 次閱讀 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$

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!