一、基础知识
触发器是由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;
三、查看
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‘;
四、删除
DROP TRIGGER INSERT_TRIGGER; DROP TRIGGER DELETE_TRIGGER;