mysql触发器

来源:互联网 发布:js 数组转换json 编辑:程序博客网 时间:2024/05/29 09:34
触发器一、定义:由insert、update、delete等事件来触发某种特定操作。触发器触发的执行语句可以有多个。注:触发器中不能包含start transaction、commit或rollback等关键词,也不能包含call语句。1、格式:create trigger 触发器名 berfor|after 触发事件 on 表名 for each row 执行语句2、格式:mysql>DELIMITER &&mysql>create trigger 触发器名 berfor|after 触发事件  on 表名 for each row  begin执行语句;执行语句; end &&mysql>DELIMITER ;注:for each row表示任何一条记录上的操作满足触发事件都会触发该触发器.MYSQL默认是以“;”作为结束执行语句。在创建触发器过程中需要用到分号,为了解决这个问题可以用delimiter语句如:“delimiter &&”,可以将结束符号变成“&&”,当触发器创建完成后可以用命令“delimiter;”来将结束符号变成分号。一个表在相同触发时间的相同触发事件,只能创建一个触发器。二、查询触发器1、语句:show triggers \G,该语句查询指定数据库中所有的触发器2、查询information_schema数据库下的triggers表:select * from information_schema.triggers where trigger_name='触发器名' \G三、删除触发器drop trigger 触发器名;四、触发器的应用1、对于insert而言,新增的行用new来表示行中的每一列的值用new.列名来表示create trigger tg2after insert on ofor each rowbeginupdate g set num=num-new.much where id=new.gid;end$2、对于delete而言,要删除的行用old表示3、对于update而言,要更新行旧值的用old表示,新值的用new表示create trigger tg2after insert on ofor each rowbeginupdate g set num=num+old.much-new.much where id=old.gid;end$4、触发事件先于监视事件发生create trigger tg5before insert on obeginif new.much >5 thenset new.much =5;end if;update g set num=num-new.much where id=new.gid;end$

0 0
原创粉丝点击