您现在的位置是:首页 >技术教程 >Mysql增删改触发器(详细带注释) 以及各个参数用处网站首页技术教程
Mysql增删改触发器(详细带注释) 以及各个参数用处
简介Mysql增删改触发器(详细带注释) 以及各个参数用处
修改的情况
DROP TRIGGER IF EXISTS a1; //如果有这个触发器就删除当前触发器
CREATE TRIGGER a1 //设置触发器的名字
AFTER INSERT ON namestudent //设置是哪个表使用的触发器比如这个表的名字是namestudent 和设置是insert 还是update 才触发
FOR EACH ROW //表示每插入一行都会触发一次
BEGIN //开始
INSERT INTO log (name, date, text) VALUES (NEW.name, NOW(), "插入操作"); //如果name表被插入之后触发给log日志表也进行一个插入操作 new.name 获取namestudent表中的name属性 (也就是触发器的表中name属性) NOW() 获取系统时间 最后一个是自定义
END; //结束
除了FOR EACH ROW 还有 AFTER INSERT 和 BEFORE INSERT用于指定触发器的执行时间,
AFTER INSERT 表示在数据被插入后执行触发器
BEFORE INSERT 则表示在数据被插入之前执行触发器。此外,还有更多用于触发器的操作指令,
如DELETE、UPDATE、AFTER DELETE和BEFORE UPDATE等。
删除的情况
DROP TRIGGER IF EXISTS a1;
CREATE TRIGGER a1
BEFORE DELETE ON name // 在删除之前触发
FOR EACH ROW
BEGIN
INSERT INTO log (name, date, text,user) VALUES (OLD.name, NOW(), "删除操作",SYSTEM_USER());
END;
1. CURRENT_TIMESTAMP():获取当前时间戳
2. DATABASE():获取当前操作的数据库名
3. CONNECTION_ID():获取当前连接的ID
4. LAST_INSERT_ID():获取上一条插入语句生成的自增ID
5. VERSION():获取当前MySQL版本号
6. SLEEP():使当前连接休眠一段时间
7. NOW():获取当前日期时间
8. RAND():生成一个随机数
9. SYSTEM_USER():获取当前操作系统用户
10. FOUND_ROWS():获取上一条SELECT语句返回的记录数
4. LAST_INSERT_ID():获取最后一次插入操作生成的自增ID值
添加修改删除代码
DROP TRIGGER IF EXISTS insert_table_article;
CREATE TRIGGER insert_table_article
AFTER INSERT ON article
FOR EACH ROW
BEGIN
INSERT INTO table_log (user, operate, text,`table`,date) VALUES (USER(),"插入一篇文章",NEW.title,"文章", NOW());
END;
DROP TRIGGER IF EXISTS delete_table_article;
CREATE TRIGGER delete_table_article
BEFORE DELETE ON article
FOR EACH ROW
BEGIN
INSERT INTO table_log (user, operate, text,`table`,date) VALUES (USER(),"删除一篇文章",OLD.title,"文章", NOW());
END;
DROP TRIGGER IF EXISTS update_table_article;
CREATE TRIGGER update_table_article
BEFORE UPDATE ON article
FOR EACH ROW
BEGIN
INSERT INTO table_log (user, operate, text,`table`,date) VALUES (USER(),"修改一篇文章",CONCAT( OLD.title,' 状态:',OLD.state),"文章", NOW());
END;
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。