mysql-觸發器

觸發器

什麼是觸發器:
觸發器是一種特殊的存儲過程,它在插入,刪除或修改特定表中的數據時觸發執行,它比數據庫本身標準的功能有更精細和更復雜的數據控制能力
觸發器的作用:
1.安全性
可以基於數據庫的值使用戶具有操作數據庫的某種權利。
可以基於時間限制用戶的操作,例如不允許下班後和節假日修改數據庫數據
可以基於數據庫中的數據限制用戶的操作,例如不允許股票的價格的升幅一次超過10%
2.審計
可以跟蹤用戶對數據庫的操作
審計用戶操作數據庫的語句
把用戶對數據庫的操作寫入審計表
3.實現複雜的數據完整性規則
實現非標準的數據完整性檢查和約束。觸發器可產生比規則更爲複雜的限制。與規則不同,觸發器可以引用列或數據庫對象。
例如,觸發器可回退任何企圖吃進超過自己保證金的期貨。
4.實現複雜的非標準的數據庫相關完整性規則。
觸發器可以對數據庫中相關的表進行連環更新。
例如,在auths表author_code列上的刪除觸發器可導致相應刪除在其它表中的與之匹配的行。
觸發器能夠拒絕或回退那些破壞相關完整性的變化,取消試圖進行數據更新的事務
5.實時同步地複製表中的數據
6.自動計算數據值
如果數據的值達到了一定的要求,則進行特定的處理。

例如,如果公司的帳號上的資金低於5萬元則立即給財務人員發送警告數據

創建觸發器:
語法:
create trigger 觸發器名稱 觸發的時機 觸發的動作 on 表名 for each row 觸發器狀態。
參數說明:
觸發器名稱: 自己定義
觸發的時機: before /after 在執行動作之前還是之後
觸發的動作 :指的激發觸發程序的語句類型<insert ,update,delete>
each row:操作第一行我都監控着
觸發器創建語法四要素:1.監視地點(table) 2.監視事件(insert/update/delete) 3.觸發時間(after/before) 4.觸發事件(insert/update/delete)

例:當category表中,刪除一個bTypeid=3的圖書分類時,books表中也要刪除對應分類的圖書信息(類似級聯刪除)

mysql> use book;
	在category執行刪除前,查看bTypeId=3的圖書分類:
mysql> select bName,bTypeId from books where bTypeId=3;

在這裏插入圖片描述
創建觸發 (實際跟創建存儲過程一樣,關鍵字換而已)

	mysql> delimiter //
mysql> create trigger delCategory after delete on category for each row
    -> delete from books where bTypeId=3;
    -> //
刪除bTypeId=3的記錄
mysql> delete from category where bTypeId=3;
查看:是否還有bTypeId=3的圖書記錄。可以看出已經刪除。
	Select bname,btypeid from books where btypeid=3//

在這裏插入圖片描述
查看觸發器:
1:查看創建過程

mysql> show create trigger delCategory\G

在這裏插入圖片描述
2:查看觸發器詳細信息

mysql> show triggers\G   這個查看所有的

在這裏插入圖片描述
刪除觸發器:
語法:
drop trigger 觸發器名稱;

mysql> drop trigger delCategory;
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20191024041058742.png)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章