【问题标题】:how to use trigger for restricting modification如何使用触发器来限制修改
【发布时间】:2015-02-25 20:19:33
【问题描述】:

我已使用此触发器来限制插入那些出生日期小于 18 的记录。这对于新插入工作正常,但我也想限制对出生日期的修改,如果它设置为小于 18。请告诉我该怎么做?

DELIMITER $$
CREATE TRIGGER `test_candidate_before_insert` BEFORE INSERT ON `candidate` FOR EACH ROW
BEGIN
    IF 
        DATEDIFF(CURDATE(), NEW.date_of_birth)/365 < 18     
    THEN
        SIGNAL SQLSTATE '12345';
    END IF;
END$$   
DELIMITER ;

【问题讨论】:

    标签: mysql sql triggers ddl


    【解决方案1】:

    您需要定义一个单独的 UPDATE 触发器。

    【讨论】:

      【解决方案2】:

      遗憾的是,MySQL 无法像其他常见的 RDBMS 那样在“插入或更新之前”创建触发器。

      只需创建另一个更新触发器:

      DELIMITER $$
      CREATE TRIGGER `test_candidate_before_update` BEFORE UPDATE ON `candidate` FOR EACH ROW
      BEGIN
          IF 
              DATEDIFF(CURDATE(), NEW.date_of_birth)/365 < 18     
          THEN
              SIGNAL SQLSTATE '12345';
          END IF;
      END$$   
      DELIMITER ;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-13
        • 2017-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多