所以我正在研究這個數據庫結構並試圖弄清楚這是否是最好的方法。我從第三方網站提取記錄並將它們存儲到一個臨時表(tableA),然後檢查tableB中的重複項,然後將非重複項插入到tableA的tableB中。無論如何,每次插入記錄時都要從tableB分配id。現在我正在查找按日期插入tableB中的最新記錄,然後檢索ID。有沒有更高效的方法?如果不存在,則使用從tableA插入數據到tableB並返回表B中的插入ID
0
A
回答
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;
相關問題
- 1. 從tableA到tableB插入count()
- 2. 從tableA插入數據到tableB
- 3. 爲TableA和TableB的ID列的組合插入新表格
- 4. 如果記錄存在則返回ID,否則插入並返回ID
- 5. 如果MySQL存在,則返回字段的「id」,否則插入新行並返回最後插入的id?
- 6. 在數據庫表中插入數據如果不存在則返回行號
- 7. 如果使用save()不存在數據,則不插入數據()
- 8. 插入多個ID從表到表B
- 9. 如果表B中存在密鑰,則插入表A
- 10. PHP&SQL插入數據如果表2中存在輸入數據,則將數據插入到表1
- 11. Postgres:如果不存在則插入,否則返回該行
- 12. SQL服務器如果不存在,插入並將插入的ID插入到另一個表中
- 13. 執行插入命令並返回在Sql中插入的ID
- 14. 插入數據如果表存在或創建表並插入數據
- 15. 如果不存在數字,則插入
- 16. 如果值不存在,則插入新行並獲取id
- 17. Knex不返回插入Id
- 18. 插入到SQL Server CE數據庫文件,並返回插入ID
- 19. 返回使用jQuery/AJAX當SQL插入ID插入一行到數據庫
- 20. 使用jQuery/AJAX從MySQL數據庫返回結果並插入到DIV中
- 21. 如果輸入存在,不要插入,否則插入PHP mysql
- 22. 如何將多行插入到MySQL表中並返回新ID?
- 23. 更新,如果ID在數據庫中可用,否則插入
- 24. 使用SQL來檢查表是否存在,如果不存在,則從不同的表中插入數據?
- 25. 如果ID存在於重複鍵的使用,否則插入
- 26. 如果數據不存在,則使用觸發器插入表中
- 27. MYSQL如果不存在插入數據
- 28. 插入數據(如果不存在)
- 29. 「插入到tableA(col1,col2)從tableB」選擇col3,col4後出現mysql auto_increment錯誤「
- 30. 如果不存在,則插入到h2表中