【问题标题】:MySQL - AFTER UPDATE Trigger between Two DatabasesMySQL - 两个数据库之间的更新后触发器
【发布时间】:2013-05-01 22:02:50
【问题描述】:

几个小时以来一直遇到一些问题。我绝不是 MySQL 人,一直在寻找解决方案,但没有运气。这基本上就是我所拥有的......

T1:CollectionDB.source

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&&

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

【问题讨论】:

    标签: mysql database triggers schema


    【解决方案1】:

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

    因此,要么:

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

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

      CREATE TRIGGER CollectionDB.UpdateSynch ...
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      • 1970-01-01
      • 2011-12-04
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多