在几个小时内遇到了一些问题。我绝不是一个MySQL人,一直在寻找解决方案,但没有运气。这基本上就是我的......
T1:CollectionDB
。来源
indexName | status_id
Test | 11
T2:ManagementConsole
。MC_SCHEDULE
NAME | ACTIVE
Test | 0
基本上,我需要的触发器应该在T1.status_id从任何数字更改为8后运行。当它运行时,它应该找到与相应的T1.indexName匹配的T2.NAME并将ACTIVE从0更改为1.这是什么我到目前为止。
DELIMITER &&
CREATE TRIGGER `UpdateSynch`
AFTER UPDATE ON `CollectionDB`.source FOR EACH ROW
BEGIN
UPDATE `ManagementConsole`.MC_SCHEDULE AS T1
SET T1.ACTIVE = 1
WHERE (NOW.indexName = T1.NAME) AND ((OLD.status_id != 8) AND (NOW.status_id = 8));
END&&
我收到了“错误架构中的触发器”错误,这是有道理的,因为我正在尝试在不同的架构中进行更新。有没有办法解决?提前谢谢。
答案 0 :(得分:1)
您必须在与目标表相同的数据库中创建触发器,即CollectionDB
;但是,您当前必须选择另一个数据库作为默认架构。
因此,要么:
在尝试创建触发器之前,将默认架构更改为CollectionDB
数据库:
USE CollectionDB;
CREATE TRIGGER UpdateSynch ...
在CREATE TRIGGER
语句中明确指定要在其中创建数据库的数据库:
CREATE TRIGGER CollectionDB.UpdateSynch ...