快捷搜索:  汽车  科技

mysql触发器使用场景(Mysql高级进阶触发器)

mysql触发器使用场景(Mysql高级进阶触发器)查看所有触发器注意: 上述sql中创建语句的形式与前面的存储过程或者存储函数都很类似,这里有点要注意的是,使用OLD/NEW关键字可以获取数据变更前后的记录,其中OLD用于AFTER时刻,而NEW用于BEFORE时刻的变更。如OLD.name表示从user表删除的记录的名称。INSERT操作一般使用NEW关键字,UPDATE操作一般使用NEW和OLD,而DELETE操作一般使用OLD。 查看触发器查看指定触发器2.给user表创建触发器,删除完user的一条记录就往user_history中插入删掉的数据创建触发器并查看测试结果触发器创建前请先使用DELIMITER //进行转换,图示中并没有进行表明

测试环境

Mysql-5.7.20-log win10

什么是触发器

触发器可以简单理解一种特殊的存储过程,之前存储过程的变量定义及流程语句同样适合触发器,唯一不同的是我们只需要定义触发器,而不用手动调用触发器。从事件触发的角度来说,触发器编写的过程就是触发事件定义的过程,因为触发器定义好后会随着数据库操作命令的执行而触发,这些具体的操作是INSERT/UPDATE/DELETE。

语法: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW BEGIN trigger_stmt ENDsh 释义: trigger_name:触发器名称,用户自行指定; trigger_time:触发时机,取值为 BEFORE 或 AFTER; trigger_event:触发事件,取值为 INSERT、UPDATE 或 DELETE;需要注意的是这些操作命令并不一定严格意义上的命令,因为像 LOAD DATA 和 REPLACE 语句也能触发上述事件。LOAD DATA 语句用于将一个文件装入到一个数据表中,是一系列的 INSERT 操作。REPLACE 语句类似INSERT 语句,当表中有 primary key 或 unique 索引时,如果插入的数据和原来 primary key 或 unique 索引一致时,会先删除原来的数据,然后增加一条新数据,也就是说,一条 REPLACE 语句会等价于一条INSERT 语句或者一条 DELETE 语句和上一条 INSERT 语句。 tbl_name:表示在哪张表上建立触发器; trigger_stmt:触发器程序体,可以是一句SQL语句或者流程语句 FOR EACH ROW : 在mysql中属于固定写法,指明触发器以行作为执行单位,也就是当用户执行删除命令删除3条数据,与删除动作相关的触发器也会被执行3次。 创建触发器

1.准备2张表

mysql触发器使用场景(Mysql高级进阶触发器)(1)

user表和user_history表

2.给user表创建触发器,删除完user的一条记录就往user_history中插入删掉的数据

mysql触发器使用场景(Mysql高级进阶触发器)(2)

创建触发器并查看测试结果

触发器创建前请先使用DELIMITER //进行转换,图示中并没有进行表明

注意: 上述sql中创建语句的形式与前面的存储过程或者存储函数都很类似,这里有点要注意的是,使用OLD/NEW关键字可以获取数据变更前后的记录,其中OLD用于AFTER时刻,而NEW用于BEFORE时刻的变更。如OLD.name表示从user表删除的记录的名称。INSERT操作一般使用NEW关键字,UPDATE操作一般使用NEW和OLD,而DELETE操作一般使用OLD。 查看触发器

mysql触发器使用场景(Mysql高级进阶触发器)(3)

查看指定触发器

mysql触发器使用场景(Mysql高级进阶触发器)(4)

查看所有触发器

删除触发器

DROP TRIGGER 触发器名称

下面给大家带来mysql中游标的使用及原理详解。谢谢大家的更专注与支持

猜您喜欢: