4

如果我在 db1 中有一个表 t1 ,在 db2 中有一个 t2 。现在对 db1 的 t1 表上的任何操作,我希望在 db2 的 t2 上执行相同的操作。

考虑一个场景......如果我在 t1 中插入相同的记录,则应该在 t2 上添加相同的记录。db1 和 db2 都位于同一个数据库中。

谁能告诉我应该采取哪些具体步骤来实现这种情况......或者如何在触发触发器之前打开两个数据库连接?

4

2 回答 2

0

您可以在一张表上编写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 回答
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 回答