phpmyadmin触发器gui检查时间

whhtz7ly  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(285)

在将记录插入“employees”表之前,我要检查年龄是否大于18岁。我正在使用phpMyAdminGUI触发器工具。但当我在definition部分键入这个脚本时,它会出现以下错误。

BEGIN
    IF (DATEDIFF(CURRENT_DATE(),NEW.birth_date) < 6570) THEN
        RAISEERROR('Age is less than 18 years!',16,1)
        ROLLBACK
    END IF
END


请帮我解决这个问题。

ruarlubt

ruarlubt1#

RAISEERROR 以及 ROLLBACK 在tsql(microsoft sql server)语法中使用。
在mysql中,我们使用 SIGNAL .. SET MESSAGE_TEXT .. 要在触发器内引发异常:

BEGIN
    IF (DATEDIFF(CURRENT_DATE(),NEW.birth_date) < 6570) THEN

      -- Throw Exception
      SIGNAL SQLSTATE '45000' 
        SET MESSAGE_TEXT = 'Age is less than 18 years!';

    END IF;  -- A semicolon (delimiter) is missing here
END

要向通用sqlstate值发送信号,请使用“45000”,这意味着“未处理的用户定义异常”
signal执行后可以访问的错误值是signal语句和消息\u text和mysql \u errno项引发的sqlstate值。

相关问题