mysql - 是否可以创建一个触发器,该触发器在将记录插入一个数据库但最终插入另一个数据库时执行?
问题描述
使用 MySQL。我在我的 web 应用程序中有两个正在使用的数据库。一个称为 AUTH,另一个是 Lab3。我想要做的是当一条记录插入到“Auth”中时,同一条记录将插入到“Lab3”中。
这两个数据库都在 MySql 中。
我的另一个解决方案是从我的 webapp 中创建两个插入语句,它们只会插入到两个数据库中。
让我知道你的想法。
谢谢
解决方案
当然。只需在以下位置提供数据库前缀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
推荐阅读
- java - 复选框取消选中Javafx tableview,禁用同一行但不同列上的按钮
- ios - 如何使用 NEOnDemandRule 类设置规则以通过 VPN 自动连接?
- javascript - 字符串的正则表达式验证
- java - DOWNLOAD_COMPLETE 意图广播系统是否明智?
- mysql - 如何确定数据库(Mysql)中的最后一个操作(编辑,更新,删除)何时发生
- javascript - 在 React 组件中挂载转换 DOM 的外部脚本?
- excel - 使用vba在Excel中设置单元格的宽度和高度
- java - 将内容保存在线程java中的数据库中
- javascript - moment-countdown js 库给了我一个奇怪的变量赋值?
- php - laravel cache()-get() 在命令中不起作用