MySQL 学习<十一> 触发器

来源:互联网 发布:十大网络主播评选结果 编辑:程序博客网 时间:2024/06/05 18:04

MySQL触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATA和DELETE语句。如果定义了触发程序,当数据库执行这些语句的时候就会激发触发器执行相应的操作,触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象。


创建触发器

触发器是一个特殊的存储过程,不同的是存储过程要用CALL来调用,而触发器不需要使用CALL,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MYSQL自动调用。


创建只有一个执行语句的触发器

创建语法如下:

CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt;

其中:

trigger_name:标识触发器名称,用户自行指定;
trigger_time:标识触发时机,用before和after替换;
trigger_event:标识触发事件,用INSERT、UPDATA和DELETE替换;
tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt:触发器程序体。


示例如下:


首先创建一个account表,表中有两个字段,分别为:acct_num字段(定义为int类型)、amount字段(定义成浮点类型);其次创建一个名为ins_sum的触发器,触发的条件是向数据表account插入数据之前,对新插入的amount字段值进行求和计算。



创建有多个执行语句的触发器

创建语法如下:
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt;

其中:
trigger_name:标识触发器名称,用户自行指定;
trigger_time:标识触发时机,用before和after替换;
trigger_event:标识触发事件,用INSERT、UPDATA和DELETE替换;
tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;
trigger_stmt:触发器程序体,触发程序可以使用begin和end作为开始和结束,中间包含多条语句。


示例如下:

1.创建几个示例表



2.创建有多个执行语句的触发器



3.给表1和表3插入初始值




4.向表1插入数据



5.查看结果



可以看到,向表test1中插入数据的时候,test2、test3、test4都发生了变化;向test2中插入了test1中的值,删除了test3中相同的内容,同时更新了test4中的b4,即与插入的值相同的个数。


查看触发器


使用SHOW TRIGGERS

使用SHOW TRIGGERS 查看触发器信息:



在triggers表中查看

1.查看所有:
SELECT * FROM information_schema.TRIGGERS \G;

2.查看特定:
SELECT * FROM  information_schema.TRIGGERS  WHERE  TRIGGER_NAME`='trigger名称';


删除触发器

使用DROP TRIGGER 语句可以删除MYSQL中已经定义的触发器,删除触发器的基本语法如下:

DROP TRIGGER [schema_name.]trigger_name;

其中(schema_name)是可选的,如果省略了schema(方案),将从当前方案中舍弃触发程序。






原创粉丝点击