4

db1 にテーブル t1 があり、 db2 に t2 がある場合。db1 の t1 テーブルに対する操作で、db2 の t2 に対して同じ操作を実行したいと考えています。

シナリオを考えてみましょう... t1 に挿入すると、同じレコードが t2 に追加されます。db1 と db2 はどちらも同じデータベース上にあります。

このシナリオを実行するためにどのような特定の手順を実行する必要があるか、またはトリガーを起動する前に両方のデータベース接続を開く方法を誰でも教えてもらえますか?

4

2 に答える 2

0

これは、関連するデータベースに適用された変更に従って、同じサーバーの異なるデータベースのデータを更新する方法でもあります

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 ;
于 2012-09-15T05:56:35.647 に答える
0

1 つのテーブルにトリガーを記述INSERT, UPDATE & DELETEして、他のテーブルにデータを反映させることができます。

マニュアルはこちら

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

END;//
delimiter ;
于 2012-09-03T09:39:28.777 に答える