db1 にテーブル t1 があり、 db2 に t2 がある場合。db1 の t1 テーブルに対する操作で、db2 の t2 に対して同じ操作を実行したいと考えています。
シナリオを考えてみましょう... t1 に挿入すると、同じレコードが t2 に追加されます。db1 と db2 はどちらも同じデータベース上にあります。
このシナリオを実行するためにどのような特定の手順を実行する必要があるか、またはトリガーを起動する前に両方のデータベース接続を開く方法を誰でも教えてもらえますか?
これは、関連するデータベースに適用された変更に従って、同じサーバーの異なるデータベースのデータを更新する方法でもあります
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 ;
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 ;