2012-09-03 19 views
4

如果我有db1中的表t1和db2中的t2表。現在在db1的t1表上的任何操作我想要在db2的t2上執行相同的操作。使用php觸發多個Mysql數據庫表格

考慮一個場景......如果我在t1中插入相同的記錄應該在t2上添加。 db1和db2都位於相同的數據庫中。

任何人都可以告訴我應該做些什麼來完成這種情況......或者如何在觸發觸發器之前打開兩個數據庫連接?

+0

外觀的變化更新同一服務器的不同數據庫的數據的方法:// stackoverflow.com/questions/1832759/creating-trigger-across-different-databases – victorsavu3

回答

0

您可以在一個表上寫入INSERT, UPDATE & DELETE觸發器以反映其他表上的數據。

手冊here

CREATE TRIGGER insert_t1 BEFORE INSERT ON db1.t1 
delimiter // 
FOR EACH ROW 
BEGIN 
    INSERT INTO db2.t2 VALUES (...); 

END;// 
delimiter ; 
+0

謝謝你這麼多...它的工作正常,但如果我想爲多臺服務器設置此可能嗎? – Jhanvi

+0

不客氣! :)是的,可以跨多個服務器同步表數據,因爲您需要在這兩個服務器之間設置複製並在複製中添加該表,或者使用其他簡單選項創建指向其他服務器的「FEDERATED」表,用上面相同的觸發器替換它的名字。 – Omesh

+0

也不要忘記接受最好的答案。見:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Omesh

0

這也是我們可以根據在http上相關的數據庫應用

USE db1; 
DROP TRIGGER IF EXISTS t1; 

DELIMITER $$ 

CREATE 
    /*[DEFINER = { user | CURRENT_USER }]*/ 
    TRIGGER `t1` AFTER INSERT 
    ON `db1`.`dt1` 
    FOR EACH ROW BEGIN 
    INSERT INTO `db2`.`dt2` 
    (ID,Fname) 
    VALUES 
    (NEW.ID,NEW.Fname); 

    END$$ 

DELIMITER ; 

////Update 

USE db1; 
DROP TRIGGER IF EXISTS t4; 
DELIMITER $$ 

CREATE 
    /*[DEFINER = { user | CURRENT_USER }]*/ 
    TRIGGER `t4` AFTER UPDATE 
    ON `db1`.`dt1` 
    FOR EACH ROW BEGIN 
UPDATE `db2`.`dt2` 
    SET `dt2`.`Fname`=NEW.Fname WHERE `dt2`.`ID`=NEW.ID; 
    END$$ 

DELIMITER ; 

////Delete 

USE db1; 
DROP TRIGGER IF EXISTS t2; 
DELIMITER $$ 
CREATE 
    /*[DEFINER = { user | CURRENT_USER }]*/ 
    TRIGGER `t2` AFTER DELETE 
    ON `db1`.`dt1` 
    FOR EACH ROW BEGIN 
    DELETE FROM `db2`.`dt2` WHERE `dt2`.`ID`=OLD.ID; 

    END$$ 
DELIMITER ; 
相關問題