当前位置: 首页 > 面试题库 >

MySQL触发器在某些情况下防止INSERT

巫马修然
2023-03-14
问题内容

我想创建一个触发器,以防止在出生日期(列之一)将来的时候插入。我有这个:

CREATE TRIGGER foo
BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.birthdate > CURRENT_DATE()
  THEN
    //How do I prevent the insert right here???
  END IF;
END;

如何取消if语句中的插入?


问题答案:

基于这一点,我不确定是否可以这样做。

MySQL当前的触发器实现中不支持自愿引发异常并中止生成触发器的语句。

我发现的解决方法是编写一个BEFORE触发器,以将表中的not-NULL列之一设置为NULL,从而违反了其NOT
NULL约束。这导致产生触发器的语句被中止。



 类似资料:
  • 有没有办法防止事件链中的一些听众为事件开火,但允许链上的其他人开火? 比如我有这个结构 假设我已经将单击事件监听器连接到body、div#1和div#2。是否有可能在div#2事件监听器上阻止事件进入div#1或介于两者之间的任何其他监听器,并允许事件在body元素上触发? 我这样说是因为我使用谷歌地图和emberjs构建了一系列可以在地图上显示的交互式信息框。问题是ember将事件侦听器附加到b

  • 本文向大家介绍Yii+MYSQL锁表防止并发情况下重复数据的方法,包括了Yii+MYSQL锁表防止并发情况下重复数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii+MYSQL锁表防止并发情况下重复数据的方法。分享给大家供大家参考,具体如下: lock table 读锁定 如果一个线程获得在一个表上的read锁,那么该线程和所有其他线程只能从表中读数据,不能进行任何写操作。 l

  • 问题内容: 鉴于以下课程 当我们验证它(例如,使用@Valid)并且如果Website.url不遵守我的自定义@ValidUrl约束时,我们将遇到约束冲突(例如,“ URL不可访问”)。 我想知道如果用户愿意,是否可以忽略该验证。 脚步: 第一次验证表格 引发约束冲突并将其显示给用户 用户选择“我知道,仍然添加”,然后重新提交 第二次验证表单,验证@ValidUrl以外的所有内容 问题答案: 您可

  • 我遇到了一个非常奇怪的问题,java线程正忙着等待。 我有一个线程忙于等待其他线程的静态变量的状态。假设忙碌等待的线程正在等待另一个线程的静态int变量达到某个值 如果我使用上面的代码,线程将被卡在忙等待中,不会跳出while循环,即使确实达到5。 但是,如果我使用其他代码,那么线程确实会跳出忙等待循环。有时,一旦达到5,其他时候会晚一点。但它会发生。对于我的特定示例,我将其用作“无意义的工作”

  • 问题内容: 我已经在带有Selenium和PhantomJS的Python中设置了一个简单的webscraping脚本。我总共要抓取大约200个URL。脚本最初运行良好,然后运行了大约20-30个URL(它可能会更多/更少,因为它失败时似乎是随机的,并且与任何特定的URL不相关),我在python中收到以下错误: 还有我的ghostdriver.log: 我进行了搜索,关于SO的大多数问题似乎都是

  • 如果噪声对连续信道符号的影响是独立的,则可以用一组转换概率来描述。此概率就是发送符号i,收到符号j的概率。最大信道速率可用下式的最大值给出: 其中,我们改变,但保持。由拉格朗日方法可得到以下方程, 。 乘以,并针对s求得,可以证明。设的逆(如果存在的话)为,使得。则: 。 因此, 。 或: 。 这就是用于确定最大值的方程组,其中需要确定C,使得。在完成这一工作后,C为信道容量,是实现这一容量的信道