您现在的位置是:首页 >技术教程 >Mysql增删改触发器(详细带注释) 以及各个参数用处网站首页技术教程

Mysql增删改触发器(详细带注释) 以及各个参数用处

听歌的代码 2024-07-13 12:01:02
简介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;


 

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。