1. 程式人生 > >MySQL筆記:觸發器

MySQL筆記:觸發器

pan closed format ger 筆記 form rop 解決 -a

一、基礎知識

觸發器是由INSERT、UPDATE和DELETE等事件觸發的某種特定操作。

當滿足觸發器的觸發條件時,數據庫系統就會執行觸發器中定義的程序語句。

二、創建

FOR EACH ROW表示任何一條記錄上的操作滿足觸發事件都會觸發。

MySQL默認以分號作為執行語句的結束,在創建觸發器的過程中需要用到分號。為了解決該問題需要用到DELIMITER語句將結束符變成其他符號,創建完成後再將結束符變回分號。

技術分享圖片
CREATE DATABASE MYDB;
USE MYDB;

CREATE TABLE STUDENT (
  NUMBER INT      NOT NULL PRIMARY
KEY, NAME CHAR(20) NOT NULL ); CREATE TABLE INSERT_TIMELINE ( INSERT_TIME DATETIME NOT NULL ); CREATE TABLE DELETE_TIMELINE ( DELETE_TIME DATETIME NOT NULL ); CREATE TRIGGER INSERT_TRIGGER AFTER INSERT ON STUDENT FOR EACH ROW INSERT INTO INSERT_TIMELINE VALUES (NOW()); #創建一個執行語句的觸發器 DELIMITER
&& CREATE TRIGGER DELETE_TRIGGER AFTER DELETE ON STUDENT FOR EACH ROW BEGIN INSERT INTO DELETE_TIMELINE VALUES (NOW()); INSERT INTO DELETE_TIMELINE VALUES (NOW()); END && DELIMITER ; #創建多個執行語句的觸發器 DROP DATABASE MYDB;
View Code


三、查看

技術分享圖片
SHOW TRIGGERS; #無法查詢指定觸發器
SELECT
* FROM information_schema.TRIGGERS; #查詢所有觸發器 SELECT * FROM information_schema.TRIGGERS WHERE TRIGGER_NAME = INSERT_TRIGGER; #查詢指定觸發器 SELECT * FROM information_schema.TRIGGERS WHERE TRIGGER_NAME = DELETE_TRIGGER;
View Code

四、刪除

技術分享圖片
DROP TRIGGER INSERT_TRIGGER;
DROP TRIGGER DELETE_TRIGGER;
View Code

MySQL筆記:觸發器