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

请帮我解决这个问题。

【问题讨论】:

RAISEERRORROLLBACK 是 TSQL(Microsoft SQL Server)的东西。你确定你使用的是 mysql 吗? 我可以在 mySQL 中使用什么来代替 ROLEBACK 和 RAISERROR?但是,如果没有这些行,它会给出错误 因为这些不是标准 SQL 的东西。每个 RDBMS 都有自己的触发器语法。 你能给我推荐用于上述目的的正确 mySQL 代码吗? 【参考方案1】:

RAISEERRORROLLBACK 用于 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 检查年龄的主要内容,如果未能解决你的问题,请参考以下文章

phpMyAdmin 错误:缺少 mbstring 扩展名。请检查您的 PHP 配置

如何使用php检查域年龄

在 phpmyadmin 上插入触发器

在 phpmyadmin 中添加触发器

在 phpmyadmin 中创建触发器

从终端访问 AWS EC2 服务器时如何查看 phpmyadmin GUI?