我想在将记录插入“员工”表之前检查年龄是否大于 18 岁。我正在使用 phpMyAdmin gui 触发工具。但是当我在定义部分键入此脚本时,它会出现以下错误。
BEGIN
IF (DATEDIFF(CURRENT_DATE(),NEW.birth_date) < 6570) THEN
RAISEERROR('Age is less than 18 years!',16,1)
ROLLBACK
END IF
END
请帮我解决这个问题。
最佳答案
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
To signal a generic SQLSTATE value, use '45000', which means “unhandled user-defined exception.”
The error values that are accessible after SIGNAL executes are the SQLSTATE value raised by the SIGNAL statement and the MESSAGE_TEXT and MYSQL_ERRNO items.
关于mysql - phpMyAdmin 触发 gui 检查年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53423662/