2014-04-22 151 views
0

我目前正在與一個客戶端一起工作,該客戶端希望他們的數據庫在最初插入時以不同格式將信息複製到第二個表中。MySQL在tbl1插入時創建觸發器也插入到tbl2

基本上類似如下:

表1

| ID | NAME | EMAIL | password | 
-------------------------------------- 
| 1 | david | [email protected] | asx234 | 
| 2 | anthony | [email protected] | 24gss3 | 
| 3 | jillian | [email protected] | hdfg5d | 

每次一排被插入到表1中,他們也想借此從表1中的信息,並把它添加到表2

表2

| ID | NAME | EMAIL | password | signature | level | lastenter | register_date | 
----------------------------------------------------------------------------------------------- 
| 1 | david | [email protected] | asx234 | text  | 3  | 0000-00-00 | Date of insert | 
| 2 | anthony | [email protected] | 24gss3 | text  | 3  | 0000-00-00 | Date of insert | 
| 3 | jillian | [email protected] | hdfg5d | text  | 3  | 0000-00-00 | Date of insert | 

如何設置一個觸發器來插入數據到表2每行插入表1?

謝謝!

+0

你應該用你試過的代碼修改你的問題。這是很常見的觸發代碼。 –

+0

我從來沒有做過觸發器。我甚至不知道從哪裏開始。 – dannycodes

回答

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過程以設定的時間間隔獲取數據。

我會全部假設明文密碼是示例。

+0

謝謝!那就是訣竅。 – dannycodes