2015-11-07 33 views
0

我需要在两个数据库之间有一个触发器,当一行插入到db1中的tbl1时,这一行插入到db2中的tbl2中。在mysql中触发两个数据库之间的mysql

CREATE TRIGGER `update_users` AFTER INSERT ON `db1`.`tbl1` 
FOR EACH ROW INSERT INTO `db2`.`tbl2` (id,email,password) 
VALUES 
(???) 

在VALUES中写什么?

+0

变化''???通过:'NEW.id,NEW.email,NEW.password',理解的是,列名这两个数据库的两个表中是相同的。 – wchiquito

+0

谢谢@wchiquito –

+0

@wchiquito这是在本地工作,但用户root没有密码,但在服务器用户和密码都设置为数据库和这个触发器不工作!帮帮我! –

回答

0

参见例如:

mysql> CREATE DATABASE `db1`; 
Query OK, 1 row affected (0.00 sec) 

mysql> CREATE DATABASE `db2`; 
Query OK, 1 row affected (0.00 sec) 

mysql> USE `db1`; 
Database changed 

mysql> CREATE TABLE `tbl1` (
    ->  `id` INT UNSIGNED, 
    ->  `email` VARCHAR(255), 
    ->  `password` VARCHAR(255) 
    ->); 
Query OK, 0 rows affected (0.01 sec) 

mysql> DELIMITER // 

mysql> CREATE TRIGGER `update_users` AFTER INSERT ON `tbl1` 
    -> FOR EACH ROW 
    -> BEGIN 
    ->  INSERT INTO `db2`.`tbl2` (`id`, `email`, `password`) 
    ->  VALUES 
    ->  (NEW.`id`, NEW.`email`, NEW.`password`); 
    -> END// 
Query OK, 0 rows affected (0.00 sec) 

mysql> DELIMITER ; 

mysql> USE `db2`; 
Database changed 

mysql> CREATE TABLE `tbl2` (
    ->  `id` INT UNSIGNED, 
    ->  `email` VARCHAR(255), 
    ->  `password` VARCHAR(255) 
    ->); 
Query OK, 0 rows affected (0.00 sec) 

mysql> USE `db1`; 
Database changed 

mysql> INSERT INTO `tbl1` VALUES (1, '[email protected]', 'secret'); 
Query OK, 1 row affected (0.00 sec) 

mysql> SELECT `id`, `email`, `password` FROM `tbl1`; 
+------+-----------------+----------+ 
| id | email   | password | 
+------+-----------------+----------+ 
| 1 | [email protected] | secret | 
+------+-----------------+----------+ 
1 row in set (0.00 sec) 

mysql> SELECT `id`, `email`, `password` FROM `db2`.`tbl2`; 
+------+-----------------+----------+ 
| id | email   | password | 
+------+-----------------+----------+ 
| 1 | [email protected] | secret | 
+------+-----------------+----------+ 
1 row in set (0.00 sec) 
相关问题