MySQL觸發器(trigger):監視某種情況並觸發某種操作
一:四要素
觸發時間:before/after
地點:table
監視操作:insert/update/delete
觸發操作:insert/update/delete
二:創建觸發器
delimiter $ #將sql結束符改為$ 方便寫觸發的sql語句
create trigger triggerName after/before insert/update/delete on tableName
for each row
begin
sql語句; #想要觸發的語句
end$
測試表:商品表(g),訂單表(o)
三:刪除監視器
drop trigger triggerName
四:下定單(o),商品表(g)數據觸發更新
create trigger tg after insert on o
for each row
begin
update g set num=num-new.much where id=new.gid;
end$
PS:對於監視操作insert 而言,新增的行用new 表示
行中的每一列的值,用new.列名 取出
五:刪除一個訂單,商品表相應增加
create trigger tg after delete on o
for each row
begin
update g set num=num+old.much where id=old.gid;
end$
六:修改一個訂單,商品表相應改變
create trigger tg after update on o
for each row
begin
update g set num=num+old.much-new.much where id=old.gid;
end$
七:after與before區別
after 是先完成數據的增刪改,再觸發,前面的數據操作完成
before是先觸發,判斷觸發的條件是否滿足,再對數據進行增刪改操作