天天看點

mysql 觸發器的建立、問題、解決方…

作用:

可以監視 增删改操作

并觸發 增删改操作

建立觸發器

(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