觸發器裡after和before的區別
after是先完成數據的增、刪、改再觸發
觸發的語句晚於監視的增、刪、改,無法影響前面的增刪改動作。
before是先完成觸發,再增、刪、改。
觸發的語句先於監視的增、刪、改發生,我們有機會判斷即將發生的操作。
典型案例:
對於所下訂單,進行判斷,如果訂單的數量 > 5,就認為是惡意訂單,強制把訂購的商品數量改成 5.
Demo
第一、創建庫存表如下:
第二、創建訂單表,咱沒有數據。
第三、先把結束符改為$
Java代碼
delimiter $
第四、創建觸發器:
Java代碼
create trigger t1
before insert on o
for each row
begin
if new.much > 5 then
set new.much = 5;
end if;
update g set number = number - new.much where id = new.gid;
end$
第五、下訂單,查看訂單表與庫存表
就算下了10只貓的訂單,訂單表中也最多為5只,庫存表中貓的庫存較少5只。