MySQL - 更新两个数据库之间的触发器

时间:2013-05-01 13:52:15

标签: mysql database triggers schema

在几个小时内遇到了一些问题。我绝不是一个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&&

我收到了“错误架构中的触发器”错误,这是有道理的,因为我正在尝试在不同的架构中进行更新。有没有办法解决?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您必须在与目标表相同的数据库中创建触发器,即CollectionDB;但是,您当前必须选择另一个数据库作为默认架构。

因此,要么:

  1. 在尝试创建触发器之前,将默认架构更改为CollectionDB数据库:

    USE CollectionDB;
    CREATE TRIGGER UpdateSynch ...
    
  2. CREATE TRIGGER语句中明确指定要在其中创建数据库的数据库:

    CREATE TRIGGER CollectionDB.UpdateSynch ...