码迷,mamicode.com
首页 > 数据库 > 详细

msql,触发器无事物回滚,插入之前满足条件再插入

时间:2016-04-23 19:59:50      阅读:1742      评论:0      收藏:0      [点我收藏+]

标签:

       很少写mysql的触发器和存储过程,由于需要需要做一个很小的判断,要用到触发器,要达到的效果就是,插入之前判断是否满足条件如果不满足就不插入

如果用sqlserver 或者orcale 就很简单,按sqlserver 和orcale的思路去找事物回滚,或者抛异常,都没用,最后只有不断查资料不断尝试,只有用mysql的触发器机制,触发器中无法修改,删除原表的值,也无法有返回值

 最后代码如下

   

CREATE
TRIGGER `duanxin_before_insert` BEFORE INSERT ON `t_duanxin`
FOR EACH ROW BEGIN
DECLARE msgcount INT(10);
SET msgcount=(SELECT COUNT(*) FROM t_duanxin WHERE FIND_IN_SET(new.to_phone, to_phone) AND new.content=content);
  IF msgcount>0 THEN
  DELETE FROM t_duanxin WHERE id=new.id;
  END IF;

END;

加粗部分是条件判断不满足就执行删除操作,执行删除就会报错就不会插入数据

技术分享

感觉这中方式有搓,就好比在代码中手动抛出异常一样,一点都不友好.不过没办法暂时只有这种实现方式了

msql,触发器无事物回滚,插入之前满足条件再插入

标签:

原文地址:http://www.cnblogs.com/owenzhou/p/5425293.html

(2)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!