作用:
可以監視 增删改操作
并觸發 增删改操作
建立觸發器
(delimiter $)
create trigger 觸發器名稱
after/before insert/update/delete on 表名
for each row
begin
sql 語句—一個或者多個語句,範圍在 insert/update/delete内;
end ($)
在此需要重新設定結束符号
delimiter $
發現問題:
1 、字元集問題導緻插入資料失敗
解決方案 修改字元集
2 、設定結尾符号語句 不可帶 分号
否則設定不成功
對于insert 而言 ,新增的行用new來表示。
行中的每一列的值,用 new.列名來表示。
對于delete而言,删去的行用 old來表示。
行中的每一列的值,用old.列名來表示。
對于update而言,更新前的行用 old來表示。old.列名表示更新前的引用。
更新後的行,用new.列名來表示更新後的引用。
觸發器的删除
drop trigger 觸發器名稱
觸發器的顯示
清空表單
truncate 表名
1、增加一個訂單,庫存相應減少
2、删除一個訂單,庫存相應增加
3、修改下單時,商品表數量相應發生變化
觸發器裡 after 和 before的差別
after 是先完成資料的操作,再出發時間,不能對前面的增删改作出影響。
如果用的是 before,可以對資料進行審查。是先于觸發再完成增删改,可以審查、判斷、即将發生的增删改操作。
before應用
建立觸發器時即可對插入資料進行影響
create trigger buy
before insert on o
if new.much >5 then
set new.much=5;
end if;
update g set num = num-new.much where id = new.gid;
end$
————————————————
版權聲明:本文為CSDN部落客「明明如月學長」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:
https://blog.csdn.net/w605283073/article/details/46572545