Mysql 触发器

含义:对一个表进行操作( insert,delete, update)时就会激活它执行里面特定的语句

  数据库存在用户表和日志表,当用户表数据增加、删除、修改的时候,日志表要进行记录。我们可以在写这个业务逻辑的时候在后台代码里面加入。但如果对mysql写了特定的触发器,在我增加一条记录的时候,会自动将存入数据到日志表。

-- 当用户删除users表数据的时候,会自动向日志加入 'name is delete on date -- DELIMITER是分隔符 DELIMITER $ CREATE TRIGGER user_log_de BEFORE DELETE on users for each row BEGIN DECLARE de VARCHAR(20)character set utf8; DECLARE delte_time VARCHAR(20) character set utf8; DECLARE rs VARCHAR(80) character set utf8; Set de = "is delete on "; Set delte_time=CURRENT_TIMESTAMP; Set rs = CONCAT(OLD.name,de,delte_time); insert into logs(log) VALUES(rs); END $ DELIMITER; 触发器常见命令格式

创建触发器

--创建触发器 CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件 -- 触发事件分insert update delete ON 表名 FOR EACH ROW -- 每行受影响,触发器都执行,叫行级触发器。 BEGIN 执行语句列表 END

触发器DELIMITER的使用

-- 触发器的分行是‘;’,因为mysql是用‘;’作为结束符,发生冲突,可以使用DELIMITER DELIMITER $ #将语句的分隔符改为$ BEGIN sql1; sql2; ... sqln END $ DELIMITER ; #将语句的分隔符改回原来的分号";"

NEW和OLD的使用

NEW.columnname:新增行的某列数据 OLD.columnname:修改/删除行的某列数据 在触发器begin/end里面,可以获得该列的数据

-- 定义变量

DECLARE var_name var_type [DEFAULT value] #定义变量,可指定默认值 SET var_name = value #给变量赋值 总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgjdfy.html