一尘不染

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

mysql

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

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语句中的插入?


阅读 434

收藏
2020-05-17

共1个答案

一尘不染

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

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

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

2020-05-17