如何使用触发器来限制修改

时间:2015-02-25 20:19:34

标签: mysql sql triggers ddl

我已经使用此触发器来限制那些出生日期小于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 ;

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

不幸的是,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 ;