全部博文(99)
分类: Mysql/postgreSQL
2010-08-24 16:04:11
MYSQL里触发器语法如下:
|
不支持statement trigger
前几日阅读《高性能MYSQL》第二版的时候,里面有段话说可以利用MYSQL的一个BUG来实现基于语句的触发器。毛主席说实践是检验真理的唯一标准,今天来测试一下是否可以做到statement trigger。
|
test_table表是触发器附属的表,test_trigger_count是记录触发器执行次数的表
创建触发器,标准的触发器.
|
测试下记录看看。
|
插入3条,触发三次。正常。
修改下触发器如下:
|
再插入3条记录看看。
|
这次只在触发器执行次数那个表添加一条记录。实现基于语句的触发器。只能用在BEOFRE触发器。
测试版本是MYSQL5.1.42 。
利用MYSQL的BUG做这样的实现,是有很大风险的,不知道哪天MYSQL的哥们把这个BUG修改了,上面的触发器就没法正确工作了。
chinaunix网友2010-08-27 11:17:24
Download More than 1000 free IT eBooks: http://free-ebooks.appspot.com
chinaunix网友2010-08-24 16:28:07
create trigger test_trigger_1 before update on test_table for each row begin declare v_row_count int default ROW_COUNT(); if (v_row_count<>1) then insert into test_trigger_count values(1,now()); end if; end ; UPDATE触发器测试成功 create trigger test_trigger_2 before delete on test_table for each row begin declare v_row_count int default ROW_COUNT(); if (v_row_count<>1) then insert into test_trigger_count values(1,now()); end if; end ; DELETE触发器测试成功