MySQL在tbl1中插入时创建触发器也插入到tbl2

时间:2014-04-22 22:49:11

标签: mysql sql triggers

我目前正在与一个客户端合作,希望他们的数据库在最初插入时以不同的格式将信息复制到第二个表格中。

基本上如下:

表1

| ID |  NAME    | EMAIL  |  password  |  
--------------------------------------
|  1 |    david | x@x.co |  asx234    | 
|  2 |  anthony | y@x.co |  24gss3    |
|  3 |  jillian | z@x.co |  hdfg5d    |

每次将一行插入表1时,他们也希望从表1中获取该信息并将其添加到表2中

表2

| ID |  NAME    | EMAIL  |  password  |  signature  |  level  |  lastenter  |  register_date  |
-----------------------------------------------------------------------------------------------
|  1 |    david | x@x.co |  asx234    |  text       |  3      |  0000-00-00 |  Date of insert | 
|  2 |  anthony | y@x.co |  24gss3    |  text       |  3      |  0000-00-00 |  Date of insert |
|  3 |  jillian | z@x.co |  hdfg5d    |  text       |  3      |  0000-00-00 |  Date of insert |

如果在表1中插入行时,如何设置触发器以将数据插入表2中?

谢谢!

1 个答案:

答案 0 :(得分:1)

下面有一些想法,但触发器看起来像这样:

 DELIMITER $$

 DROP TRIGGER IF EXISTS trgMyNewTrigger $$

 CREATE TRIGGER trgMyNewTrigger AFTER INSERT ON Table1
 FOR EACH ROW
 BEGIN
     INSERT into Table2 (ID,NAME,EMAIL,`password`,signature,`level`,lastenter,register_date) VALUES (
        new.ID, new.NAME, new.EMAIL, new.password, 'text', 3, '0000-00-00', CURDATE() );
 END $$

 DELIMITER ;

这不是一个很好的解决方案。触发器通常会导致一些令人讨厌的问题并限制您的能力。最好重新考虑表的设计以包含所需的数据,让应用程序执行额外的步骤或使用某种ETL过程以设定的间隔获取数据。

我都会假设明文密码是为了这个例子。