Mysql中的跨数据库触发器

mri*_*l4c 4 mysql sql triggers

是否可以在 MySQL 中应用触发器进行跨数据库访问 如果可以,请举一个例子。我的目的是如果数据库1中有任何新数据插入/更新/删除,则在数据库2中插入/更新/删除数据。我正在使用 MySQL 5.1

Cip*_*ica 7

我知道这是一个老话题,但我只需要自己实现一个跨数据库触发器,我想在这里展示解决方案,因为其他读者可能会从中受益。

在触发器的代码中,可以引用目标数据库的全名database_name.table_name

假设您在同一台服务器上有两个数据库:database1database2。在这两个数据库中都有下表:

CREATE TABLE 'test' (
  'id' int(10) DEFAULT NULL,
  'name' varchar(100) DEFAULT NULL
)
Run Code Online (Sandbox Code Playgroud)

database1您创建以下 INSERT 触发器:

USE database1;

DELIMITER //
CREATE TRIGGER sync_insert AFTER INSERT ON test 
FOR EACH ROW
BEGIN
INSERT INTO database2.test SET id = NEW.id, name=NEW.name;
END; //
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

为 UPDATE 和 DELETE 定义类似的触发器。

我想说这个解决方案比使用过程更简单、更直接。

我在 MySQL 5.1.73 和 MariaDB 10.2.13 上测试了上述内容。