## 觸發器
#### 概念
**觸發器是一種特殊類型的存儲過程**,它不同于我們前面介紹過的存儲過程。**觸發器主要是通過事件進行觸發而被執行的**,而存儲過程可以通過存儲過程名字而被直接調用。
觸發器:trigger,是一種非常接近于js中的事件的知識。提前給某張表的所有記錄(行)綁定一段代碼,如果改行的操作滿足條件(觸發),這段提前準備好的代碼就會自動執行。
#### 作用
1. 可在寫入數據表前,強制檢驗或轉換數據。(保證數據安全).
2. 觸發器發生錯誤時,異動的結果會被撤銷。(如果觸發器執行錯誤,那么前面用戶已經執行成功的操作也會被撤銷:事務安全).
3. 部分數據庫管理系統可以針對數據定義語言(DDL)使用觸發器,稱為DDL觸發器.
4. 可依照特定的情況,替換異動的指令 (INSTEAD OF)。(mysql不支持)
#### 優點
1. 觸發器可通過數據庫中的相關表實現級聯更改。(如果某張表的數據改變,可以利用觸發器來實現其他表的無痕操作[用戶不知道]).
2. 保證數據安全:進行安全校驗.
#### 缺點
1. 對觸發器過分的依賴,勢必影響數據庫的結構,同時增加了維護的復雜程度。
2. 造成數據在程序層面不可控。(PHP層)
- 數據庫介紹
- 數據庫基本概念
- SQL介紹
- MySQL服務端架構
- 庫操作
- 表操作
- 字段類型
- 整數類型
- 小數類型
- 字符串類型
- 日期/時間類型
- json類型
- 字段屬性
- Null
- 默認值
- 列描述
- 主鍵
- 自動增長
- 唯一鍵
- 數據庫基礎操作
- 增
- 刪
- 改
- 查
- 運算符
- 算術運算符
- 比較運算符
- 邏輯運算符
- in運算符
- is運算符
- like運算符
- 高級查詢
- 聯合查詢
- 連接查詢
- 交叉連接
- 內連接
- 外連接
- Using關鍵字
- 子查詢
- 標量子查詢
- 列子查詢
- 行子查詢
- 表子查詢
- exists子查詢
- 子查詢特定關鍵字
- 用戶權限管理
- 用戶管理
- 權限管理
- 外鍵
- 外鍵操作
- 外鍵基本要求
- 約束
- 視圖
- 事務安全
- 自動事務
- 手動事務
- 事務特點
- 變量
- 系統變量
- 會話變量
- 局部變量
- 流程結構
- if分支
- while循環
- 函數
- 內置函數
- 字符串函數
- 時間函數
- 數學函數
- 其他函數
- 存儲過程
- 與函數的區別
- 存儲過程操作
- 存儲過程的形參類型
- 觸發器
- 觸發器概念
- 觸發器操作