2013-04-02 67 views
0

所以我正在研究這個數據庫結構並試圖弄清楚這是否是最好的方法。我從第三方網站提取記錄並將它們存儲到一個臨時表(tableA),然後檢查tableB中的重複項,然後將非重複項插入到tableA的tableB中。無論如何,每次插入記錄時都要從tableB分配id。現在我正在查找按日期插入tableB中的最新記錄,然後檢索ID。有沒有更高效的方法?如果不存在,則使用從tableA插入數據到tableB並返回表B中的插入ID

回答

0

有沒有你不使用INSERT IGNORE理由嗎?在我看來,你可以廢除整個臨時表的過程...

+----+------+ 
| id | name | 
|----|------| 
| 1 | adam | 
| 2 | bob | 
| 3 | carl | 
+----+------+ 

如果id具有唯一約束,那麼這樣的:

INSERT IGNORE INTO tableName (id, name) VALUES (3, "carl"), (4, "dave"); 

...將導致:

+----+------+ 
| id | name | 
|----|------| 
| 1 | adam | 
| 2 | bob | 
| 3 | carl | 
| 4 | dave | 
+----+------+ 

...而如果你只是做了INSERT(不IGNORE部分),它會給你一個獨特的鍵約束的錯誤。

在獲取ID後面的條款,只需使用:

SELECT LAST_INSERT_ID() 

...電話後,每INSERT IGNORE你做。

0

這聽起來像是你想要在表B上的一個稱爲後插入觸發器的東西。這是在將一行或多行插入到表中之後運行的一段代碼。文檔是here

的代碼是一樣的東西:

CREATE TRIGGER mytrigger AFTER INSERT ON B 
    FOR EACH ROW BEGIN 
     -- Do what you want with each row here 
    END; 
相關問題