一、触发器
触发器是由事件来出发某个动作。这些事件包括insert语句、update语句和delete语句。
当数据库系统执行这些事件时,就会激活触发器执行相应得动作。
触发器是有insert、update、delete等事件来触发某种特定动作。满足触发器的触发条件时,数据库系统就会执行触发器中定义的程序语句。
这样做可以保证某些操作之间的一致性.
1、创建只有一个执行语句的触发器
语法格式:
create trigger 触发器名 before|after 触发事件
on 表名 for each row 执行语句
触发器名参数指要创建的触发器的名字;
before和after参数指定了触发器执行的时间;
before指在触发事件之前执行触发语句;
after指在触发事件之后执行触发语句;
触发事件指触发的条件,其中包括insert、update、delete;
表名指触发事件操作的表的名称;
for each row表示任何一条记录上的操作满足触发条件都会触发该触发器;
执行语句指触发器被触发后执行的程序;
举例:
create trigger dept_trig1 before insert
on department for each row
inert into trigger_time values(now());
注释:当向department表中执行insert操作时,数据库系统都会在insert语句执行之前向trigger_time表中插入当前时间;
2、创建有多个执行语句的触发器
语法格式:
create trigger 触发器名 before|after 触发事件
on 表名 for each row
begin
执行语句列表
end
执行语句列表表示需要执行的多个执行语句的内容,不同执行语句之间用分好隔开;
注意:
一般情况下,MYSQL默认的是以“;”作为结束执行语句。在创建触发器的过程中,需要用到“;”为了解决这个问题可以用delimiter语句
如“delimiter &&”可以将结束符号变为“&&”。当触发器创建完成之后,可以用命令“delimiter ;”来将结束符号变为“;”。
举例:
delimiter &&
create trigger dept_trig2 aftrer delete
on department for each row
begin
insert into trigger_time values('21:01:01');
insert into trigger_time values('22:01:01');
end
&&
delimiter;
注意:在MYSQL中,一个表在相同的触发时间,只能创建一个触发器;
3、查看触发器
(1)show triggers语句查看触发器信息
语法格式:show triggers;
注释:其结果显示了所有触发器的基本信息,但是该语句无法查询指定的触发器信息,只能查询所有的触发器信息,适合触发器较少时使用
(2)在triggers表中查看触发器信息
在MYSQL中,所有触发器的定义都存储在information_schema数据库下的triggers表中,
查询triggers表,可以查看到数据库中所有触发器的详细信息;
语法格式:select * from information_schema.triggers;
同时该方法可以查询指定触发器的详细信息。
语法格式:select * from information_schema.triggers where trigger_name='触发器名';
4、触发器的使用
before在触发事件之前执行,after在触发事件之后执行;
注意:触发器中不能包含start transaction、commit或者rollback等关键词,也不能包含call语句。
5、删除触发器
语法格式:drop trigger 触发器名;
=====================================================================================================================
=====================================================================================================================
=====================================================================================================================
=====================================================================================================================
=====================================================================================================================
=====================================================================================================================
create trigger 触发器名 before| after 触发事件
on 表名 for each row
执行语句;
delimiter &&
create trigger 触发器名 before| after 触发事件
on 表名 for each row
begin
执行语句列表
end
&&
delimiter;
触发事件是指触发条件,包括insert、update、delete;
表名指触发事件操作的表的名称;
mysql 触发器定义int变量 mysql触发器语法格式
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章