mysql - 创建 Sql 触发器查询语法问题
问题描述
我创建了一个触发器,如果我手动创建它,它的工作,当我导出并在另一个数据库中运行查询时,在 If 条件附近显示语法错误。谁能帮忙,以下查询中的问题是什么
CREATE TRIGGER advance_audit
AFTER UPDATE ON employee
FOR EACH ROW
BEGIN
IF NEW.firstname <> OLD.firstname THEN
INSERT INTO employees_audit (action, column_name, old_name, new_name, operator)
VALUES ('update', 'firstname', OLD.firstname, NEW.firstname, SYSTEM_USER());
END IF;
IF NEW.lastname <> OLD.lastname THEN
INSERT INTO employees_audit (action, column_name, old_name, new_name, operator)
VALUES ('update', 'lastname', OLD.lastname, NEW.lastname, SYSTEM_USER());
END IF;
END
解决方案
将触发器转换为单语句形式:
CREATE TRIGGER advance_audit
AFTER UPDATE ON employee
FOR EACH ROW
INSERT INTO employees_audit (action, column_name, old_name, new_name, operator)
SELECT 'update', 'firstname', NEW.firstname, OLD.firstname, SYSTEM_USER()
WHERE NEW.firstname <> OLD.firstname
UNION ALL
SELECT 'update', 'lastname', NEW.lastname, OLD.lastname, SYSTEM_USER()
WHERE NEW.lastname <> OLD.lastname;
推荐阅读
- reactjs - React Native - 我似乎无法让 Axios 和 AsyncStorage 在 Android 中一起工作,但代码在 iOS 上工作?
- c# - 实现接口的实体的通用配置
- mysql - mysql数据过滤
- python - glob 与 if 语句来选择哪些文件存储到一个变量?
- sql-server - SQL Server:安全地将数据移动到(维护不善的)历史表
- https - 我想把 kibana 带到 https 上。有什么方法可以做到
- python - 在 PyQt4 中动态创建/填充 QTableWidgets
- angular - 使用 null 过滤
- git - 使用 S3 Maven 存储库构建代码
- microsoft-translator - 无法将文件上传到 Microsoft 自定义翻译器