如果我在db1中有一个表t1,在db2中有一个表t2。现在对于db1的t1表上的任何操作,我希望在db2的t2上执行相同的操作。
考虑这样一种情况...如果我在t1中插入同样的记录,那么t2中也应该添加相同的记录。 db1和db2都位于同一个数据库中。
有人能告诉我应该采取哪些具体步骤来实现这个场景... 或者如何在触发器之前打开两个数据库连接?
如果我在db1中有一个表t1,在db2中有一个表t2。现在对于db1的t1表上的任何操作,我希望在db2的t2上执行相同的操作。
考虑这样一种情况...如果我在t1中插入同样的记录,那么t2中也应该添加相同的记录。 db1和db2都位于同一个数据库中。
有人能告诉我应该采取哪些具体步骤来实现这个场景... 或者如何在触发器之前打开两个数据库连接?
您可以在一个表上编写INSERT、UPDATE和DELETE
触发器,以反映其他表上的数据。
手动这里
CREATE TRIGGER insert_t1 BEFORE INSERT ON db1.t1
delimiter //
FOR EACH ROW
BEGIN
INSERT INTO db2.t2 VALUES (...);
END;//
delimiter ;
这也是一种我们可以根据相关数据库的更改更新同一服务器上不同数据库数据的方法。
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 ;