作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 MySQL 触发器感到抓狂。 MySQL 说代码中有错误,但我不知道问题出在哪里。
这是触发器
CREATE TRIGGER UPDATE_COUNTRY
AFTER INSERT
ON `dog`FOR EACH ROW
BEGIN
IF (NEW.export=1)
THEN
IF (NEW.year > (SELECT MAX(`updated_year`) FROM `dog` WHERE `code`=NEW.origin))
THEN
UPDATE `dog` SET `updated_year`= NEW.year, `updated_month`= NEW.month WHERE `code`= NEW.origin;
ELSEIF (NEW.year = (SELECT MAX(`updated_year`) FROM `dog` WHERE `code`=NEW.origine)
AND NEW.month > (SELECT MAX(`updated_month`) FROM `dog` WHERE `code`=NEW.origine AND `updated_year`=NEW.year))
THEN UPDATE `dog` SET `updated_month`=NEW.month WHERE `code`=NEW.origin;
ELSE
RETURN NEW;
END IF;
END IF;
RETURN NEW;
END;
我的 SQL 说
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 13 行 '' 附近使用的正确语法
谢谢大家!
最佳答案
您的触发器是:
AFTER INSERT ON `dog`FOR EACH ROW
你的第 13 行是
UPDATE `dog` SET `updated_year`= NEW.year, `updated_month`= NEW.month WHERE `code`= NEW.origin;
这有点糟糕,但是您无法在当前插入/更新/删除数据的同一个表上使用触发器进行更新/插入/删除,因为该表已锁定。
这是 MySQL 的限制(是的,并不是所有 SGDB 实际上都有这个限制......(
如果您想更新“dog”表,则需要采用不同的方法。您可以使用存储过程来执行插入和更新。
关于MySQL TRIGGER ON INSERT 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32785219/
我是一名优秀的程序员,十分优秀!