Mysql 中触发器的创建可以使用Create Trigger命令来实现下面一个示例:
mysql> delimiter //
mysql> CREATE TRIGGER UserInfoTable_UPDATE BEFORE UPDATE ON UserInfoTable FOR EACH ROW
BEGIN
SELECT MD5(concat(new.U_ID,new.PASSWORD,new.IDNumber,CONCAT(new.PASSWORDRULEID,''),new.UserName)) into @jyw from dual;
set new.CheckBit = @jyw;
END;//
mysql> DELIMITER ;
以下是在SQL工具中执行的格式
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER `tachographs`.`UserInfoTable_UPDATE` BEFORE UPDATE
ON `tachographs`.`<Table Name>`
FOR EACH ROW BEGIN
SELECT MD5(CONCAT(new.U_ID,new.PASSWORD,new.IDNumber,CONCAT(new.PASSWORDRULEID,''),new.UserName)) INTO @jyw FROM DUAL;
SET new.CheckBit = @jyw;
END$$
DELIMITER ;
简化命令如下 :
CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件
ON 表名 FOR EACH ROW
BEGIN
执行语句列表
END
触发器的类型有以下几种:
BEFORE INSERT
BEFORE DELETE
BEFORE UPDATE
AFTER INSERT
AFTER DELETE
AFTER UPDATE
还有一个要点:NEW和OLD的使用
NEW.columnname:新数据
OLD.columnname:旧数据
删除触发器命令如下:
drop trigger mytrigger; --删除触发器
查询触发器:
SHOW TRIGGERS FROM `databasename`;
或者使用:
SELECT * FROM information_schema.triggers WHERE trigger_schema = 'databasename'
ORDER BY event_object_table , action_timing , event_manipulation;
最后留一个小小的包袱,创建多个触发器时通过SHOW TRIGGERS是查询不到一项重要信息的。可以参考我的文章:https://lebang2020.cn/details/210224e0l02tx1.html