2021-02-24 乐帮网
mysql笔记
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
https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html
关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com
庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。
如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力