MYSQL 触发器 新建 删除 查看 示例

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

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力