|
作用: 可以監(jiān)視 增刪改操作 并觸發(fā) 增刪改操作  創(chuàng)建觸發(fā)器 (delimiter $) create trigger 觸發(fā)器名稱 after/before insert/update/delete on 表名 for each row begin sql 語句—一個(gè)或者多個(gè)語句,范圍在 insert/update/delete內(nèi); end ($) 在此需要重新設(shè)置結(jié)束符號 delimiter $  創(chuàng)建第一個(gè)簡單觸發(fā)器:  效果  g 表 羊自動(dòng)減少 3只  發(fā)現(xiàn)問題:  設(shè)置結(jié)尾符號語句 不可帶 分號 否則設(shè)置不成功  解決方案  如何在觸發(fā)器中引用行的值  對于insert 而言 ,新增的行用new來表示。 行中的每一列的值,用 new.列名來表示。 對于delete而言,刪去的行用 old來表示。 行中的每一列的值,用old.列名來表示。  對于update而言,更新前的行用 old來表示。old.列名表示更新前的引用。 更新后的行,用new.列名來表示更新后的引用。 觸發(fā)器的刪除 drop trigger 觸發(fā)器名稱  觸發(fā)器的顯示  清空表單 truncate 表名  購買下單實(shí)例 1、創(chuàng)建滿足條件的新的觸發(fā)器  2、執(zhí)行 insert(下第一筆訂單 購買 4 號商品,數(shù)量為2)  3、查看o訂單  4、g商品表中的 對應(yīng)id號得商品減少 1、增加一個(gè)訂單,庫存相應(yīng)減少  2、刪除一個(gè)訂單,庫存相應(yīng)增加   3、修改下單時(shí),商品表數(shù)量相應(yīng)發(fā)生變化   觸發(fā)器里 after 和 before的區(qū)別 after 是先完成數(shù)據(jù)的操作,再出發(fā)時(shí)間,不能對前面的增刪改作出影響。 如果用的是 before,可以對數(shù)據(jù)進(jìn)行審查。是先于觸發(fā)再完成增刪改,可以審查、判斷、即將發(fā)生的增刪改操作。 before應(yīng)用  創(chuàng)建觸發(fā)器時(shí)即可對插入數(shù)據(jù)進(jìn)行影響 create trigger buy before insert on o for each row begin if new.much >5 then set new.much=5; end if; update g set num = num -new.much where id = new.gid; end$ 
信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
|