MySQL触发器 - 如果超出范围,则不接受记录更新

时间:2015-11-18 02:25:02

标签: mysql triggers

我正在尝试创建(我认为)应该是一个基本的触发器。

基本上如果有人试图为超出触发范围的记录设置值,那么它将拒绝更新。

表名为:人

有关领域是:年龄

 CREATE TRIGGER max_age_trigger
 BEFORE UPDATE
 ON People
 FOR EACH ROW
   BEGIN
     IF People.age <0 OR People.age>150 THEN
       CALL 'Error: The age is out of range (0 > 150)';
    END IF;
 END

MySQL在第7行抛出错误。但是我不知道我哪里出错了。我是触手可及者的新手,我仍然不知所措。

如果您可以帮助/协助我使用我的代码,那将会有很大的帮助:)

1 个答案:

答案 0 :(得分:0)

如果您想抛出错误并停止处理,请使用SIGNAL

CREATE TRIGGER max_age_trigger BEFORE UPDATE
ON People
FOR EACH ROW
BEGIN
     IF People.age <0 OR People.age>150 THEN
       SIGNAL SQLSTATE '45000'
           SET MESSAGE_TEXT = 'Error: The age is out of range (0 > 150)';
    END IF;
END