phpMyAdmin 触发 gui 检查年龄
Posted
技术标签:
【中文标题】phpMyAdmin 触发 gui 检查年龄【英文标题】:phpMyAdmin trigger gui checking age 【发布时间】:2019-04-24 16:58:04 【问题描述】:我想在将记录插入“员工”表之前检查年龄是否大于 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 吗?
我可以在 mySQL 中使用什么来代替 ROLEBACK 和 RAISERROR?但是,如果没有这些行,它会给出错误
因为这些不是标准 SQL 的东西。每个 RDBMS 都有自己的触发器语法。
你能给我推荐用于上述目的的正确 mySQL 代码吗?
【参考方案1】:
RAISEERROR
和 ROLLBACK
用于 TSQL (Microsoft SQL Server) 语法。
以 MySQL 为例,我们使用SIGNAL .. SET MESSAGE_TEXT ..
在 Trigger 内抛出异常:
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 语句和 MESSAGE_TEXT 引发的 SQLSTATE 值和 MYSQL_ERRNO 项。
【讨论】:
以上是关于phpMyAdmin 触发 gui 检查年龄的主要内容,如果未能解决你的问题,请参考以下文章