很少写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;

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

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

更多相关文章

  1. 使用不同的条件,在同一个表的一个SQL查询中使用多个聚合函数
  2. SQL:如何从另一个表中删除行会议条件
  3. 如何检查具有多个条件的SQL CASE?
  4. 在Postgres STRING_AGG中对条件数据进行排序
  5. mybatis中mysql多条件查询
  6. java中sql查询条件为中文时,rs.next为false,查询不到结果的解决办
  7. mysql更新触发器先插入另一张表然后删除该条数据
  8. 条件SQL选择-当返回集为空时,执行另一个选择?
  9. 条件复杂的sql语句查询

随机推荐

  1. 如何避免android ANR
  2. Unity Android打包apk安装错误INSTALL_FA
  3. Android PVPlayer介绍
  4. android:screenOrientation横屏竖屏设置
  5. 知识体系引导
  6. Android(安卓)最火的快速开发框架android
  7. Android常用知识笔记
  8. Android的架构与Android应用程序启动流程
  9. Android点击事件之后跳到界面指定位置
  10. android上的i-jetty (1)环境搭建