gpt4 book ai didi

mysql - SQL 语法错误和事件无法启动

转载 作者:行者123 更新时间:2023-11-29 16:31:20 25 4
gpt4 key购买 nike

每当列“AISTATUS”更改为值“TRIGGER REQUIRED”时,我一直在尝试编写一个事件触发器来更新表。我无法获取触发器来引用两个单独的表来提取我需要的值,因此我选择使用事件。唯一的问题是我在第 1 行收到语法错误:1064,但我很难理解为什么会出现错误或错误在哪里。

DELIMITER //    
CREATE EVENT Retention_Date_Update
ON SCHEDULE EVERY 2 MINUTE
STARTS CURRENT_TIMESTAMP
ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
ON COMPLETION PRESERVE
DO
BEGIN;
IF (gdpr_file_cabinet.AISTATUS = 'TRIGGER REQUIRED')
THEN
IF (gdpr_file_cabinet.EMPLOYMENT_STATUS = 0)
THEN
UPDATE gdpr_file_cabinet
SET REVIEW_EXPIRY_DATE = (RETENTION_START_DATE + INTERVAL adata.EDB_RETENTION_EMPLOYED MONTH)
AND AISTATUS = "TRIGGER COMPLETE"
WHERE documentName = adata.EDB_DOCUMENT_NAME;
ELSE
UPDATE gdpr_file_cabinet
SET REVIEW_EXPIRY_DATE = (RETENTION_START_DATE + INTERVAL adata.EDB_RETENTION_UNEMPLOYED MONTH)
AND AISTATUS = "TRIGGER COMPLETE"
WHERE documentName = adata.EDB_DOCUMENT_NAME;
END IF;
END IF;
END;//
DELIMITER ;

我有两个数据库,每个数据库都包含一个我需要引用的表。数据库1是“adata”,表1是“gdpr_data”。数据库2为“dwdata”,表2为“gdpr_file_cabinet”。

可能相关的第二个问题是事件将创建,但当我运行上面的代码时不会启动。全局事件调度程序已打开 (SET @@global.event_scheduler = 1)。

我对此有疑问:1 - 任何人都可以识别语法错误吗,因为我看不到它。2 - 为什么事件“执行于”框保持为空。3 - 我可以将 Workbench 设置为突出显示此类错误,因为除非我尝试运行脚本,否则它目前不会警告我。

最佳答案

这可能只是 1 个更新语句,因为第二个 if 似乎不相关

UPDATE gdpr_file_cabinet g join adata a on a.EDB_DOCUMENT_NAME = g.documentname
SET REVIEW_EXPIRY_DATE = (RETENTION_START_DATE + INTERVAL a.EDB_RETENTION_EMPLOYED MONTH)
, AISTATUS = "TRIGGER COMPLETE"
WHERE g.aistatus = 'TRIGGER REQUIRED';

我还没有对此进行测试,如果您遇到问题,请阅读手册,如果遇到困难,请将表定义和示例数据作为文本添加到问题中。

关于mysql - SQL 语法错误和事件无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53849846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com