创建UPDATE触发器时MySQL语法错误

时间:2019-03-09 06:33:21

标签: mysql triggers

我正在尝试在更新此表的薪水字段时创建触发器。 来自该站点SQL Trigger客户(ID,姓名,年龄,地址,薪水) 创建它时显示以下错误

MySQL说:
#1064-您的SQL语法有误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以便在'OR INSERT或UPDATE ON客户附近使用 每行 何时(NEW.ID> 0) 宣布 '在第2行

这是代码段:

{
  "app": "Beach",
  "Process": "steam",
  "versions": [
        {
            "version": "2.6.5",
            "conf": "replian"
        }, ...

请注意,我正在使用phpMyAdmin。 dbms_ouput.put_line()在那里工作吗?

1 个答案:

答案 0 :(得分:0)

如评论中所述,您使用的是Oracle语法,它无法在MySQL上运行。

然后,没有理由在DELETE和INSERT上触发此触发器,因为您的目的是在更新之前和之后计算特定行的薪金差异。在DELETE上不能有新值,在INSERT上不能有OLD值。 因此,您的计算仅在UPDATE时有意义。

这是正确的MySQL语法(我假设您的表上有一列sal_diff

DELIMITER $$
CREATE TRIGGER `update_sal_diff`
BEFORE UPDATE ON `customers `
FOR EACH ROW
BEGIN
    SET NEW.sal_diff = NEW.salary  - OLD.salary;
END $$
DELIMITER ;

如果这不是您要实现的目标,请编辑问题并添加明确的要求