3

几个小时以来一直有一些问题。我绝不是 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&&

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

4

1 回答 1

2

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

因此,要么:

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

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

    CREATE TRIGGER CollectionDB.UpdateSynch ...
    
于 2013-05-01T14:02:50.067 回答