带有 IF-statement 的 MariaDB 触发器不起作用,并且不会返回任何错误

MariaDB trigger with IF-statement doesn't work and returns no errors

提问人:Centaro 提问时间:4/20/2023 最后编辑:Centaro 更新时间:4/24/2023 访问量:126

问:

我在 MariaBD 10.11.2 中编写了一个相当简单的触发器,但它不会产生任何输出,甚至没有错误。

CREATE TRIGGER Automatic_Employee
BEFORE INSERT
ON Test_Results
FOR EACH ROW
BEGIN
  IF (CURRENT_USER() = 'FOO') THEN
    SET NEW.Employee_ID = 0;
  END IF;
END

这是有问题的代码。我对此表有类似的触发器,其中部分结果是自动输入的。我以 FOO 身份登录,输入输入后字段保持 [NULL] 而不是 0。其他一切正常。

有什么想法吗?提前致谢。

sql if-statement 触发 mariadb innodb

评论


答:

1赞 slaakso 4/21/2023 #1

你的代码应该给你一个关于未知的错误。Employee_ID

若要设置插入行中列的值,请使用 表示法 。new.column

您的代码应如下所示:

CREATE TRIGGER Automatic_Employee
BEFORE INSERT
ON Test_Results
FOR EACH ROW
BEGIN
  IF (USER() = 'FOO@localhost') THEN
    SET new.Employee_ID = 0;
  END IF;
END

该函数在存储的例程和触发器中返回 CREATOR。该函数返回运行查询的用户的用户名和主机名。CURRENT_USER()USER()

评论

0赞 Centaro 7/18/2023
我又看了一遍,你是完全正确的。谢谢你,先生!=)