2013-05-01 52 views
1

幾個小時以來一直有這個問題。我絕不是MySQL的人,一直在尋找解決方案,但沒有運氣。這裏的基本上就是我..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&& 

我得到'錯誤模式觸發'錯誤,這是有道理的,因爲我試圖在不同的模式下進行更新。有沒有辦法解決?提前致謝。

回答

0

您必須在與目標表相同的數據庫中創建觸發器,即CollectionDB;但是,您目前必須將另一個數據庫選作默認模式。

因此,無論是:

USE CollectionDB; 
CREATE TRIGGER UpdateSynch ... 
  • CREATE TRIGGER聲明中明確指定要在其中數據庫:

    1. 嘗試創建觸發器之前更改默認架構到CollectionDB數據庫它被創建:

      CREATE TRIGGER CollectionDB.UpdateSynch ...