首页 > 解决方案 > 是否可以创建一个触发器,该触发器在将记录插入一个数据库但最终插入另一个数据库时执行?

问题描述

使用 MySQL。我在我的 web 应用程序中有两个正在使用的数据库。一个称为 AUTH,另一个是 Lab3。我想要做的是当一条记录插入到“Auth”中时,同一条记录将插入到“Lab3”中。

这两个数据库都在 MySql 中。

我的另一个解决方案是从我的 webapp 中创建两个插入语句,它们只会插入到两个数据库中。

让我知道你的想法。

谢谢

标签: mysqlsqlvisual-studiotriggers

解决方案


当然。只需在以下位置提供数据库前缀INSERT

CREATE TRIGGER trig_test2 AFTER INSERT ON test2
FOR EACH ROW
INSERT INTO test2.test2 (copy) VALUES (NEW.copy+1000)
;

设置:

USE test;

CREATE DATABASE IF NOT EXISTS test2;

DROP TABLE IF EXISTS test2.test2;
CREATE TABLE test2.test2 ( id int primary key auto_increment, copy int );

DROP TABLE IF EXISTS test2;  -- current database "test"
CREATE TABLE test2 ( id int primary key auto_increment, copy int );

DROP TRIGGER IF EXISTS trig_test2;

INSERT INTO test2 (copy) VALUES (100);

CREATE TRIGGER trig_test2 AFTER INSERT ON test2
FOR EACH ROW
INSERT INTO test2.test2 (copy) VALUES (NEW.copy+1000)
;

INSERT INTO test2 (copy) VALUES (101);
INSERT INTO test2 (copy) VALUES (102);
INSERT INTO test2 (copy) VALUES (103);

SELECT * FROM test2;

SELECT * FROM test2.test2;

结果:

--------------
SELECT * FROM test2
--------------

+----+------+
| id | copy |
+----+------+
|  1 |  100 |   <-- Inserted before the trigger was created.
|  2 |  101 |
|  3 |  102 |
|  4 |  103 |
+----+------+
4 rows in set

--------------
SELECT * FROM test2.test2
--------------

+----+------+
| id | copy |
+----+------+
|  1 | 1101 |
|  2 | 1102 |
|  3 | 1103 |
+----+------+
3 rows in set

推荐阅读