Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-两个数据库之间的更新后触发器_Mysql_Database_Triggers_Schema - Fatal编程技术网

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

MySQL-两个数据库之间的更新后触发器,mysql,database,triggers,schema,Mysql,Database,Triggers,Schema,这几个小时来一直有一些问题。我绝不是一个MySQL的家伙,一直在寻找解决方案,但运气不佳。这基本上就是我所拥有的 T1:CollectionDB。源代码 indexName | status_id Test | 11 T2:管理控制台.MC\u时间表 NAME | ACTIVE Test | 0 基本上,我需要的触发器应该在T1.status_id从任意数字更改为8之后运行。当它运行时,它应该找到与相应的T1.indexName匹配的T2.NAME

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

T1:
CollectionDB
。源代码

indexName | status_id
   Test   |     11
T2:
管理控制台
.MC\u时间表

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

我得到了一个“错误模式中的触发器”错误,这是有意义的,因为我试图在不同的模式中进行更新。这有什么办法吗?提前感谢。

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

因此,要么:

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

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

    CREATE TRIGGER CollectionDB.UpdateSynch ...