每天我在mysql中添加近5000條新記錄,我想防止在表中插入重複行,我想我應該檢查所有的銀行befor任何插入操作,是嗎?適當? 或者有更好的方法來做到這一點? 在此先感謝防止表中有超過20000條記錄的重複數據
1
A
回答
1
通過對字段屬性應用唯一索引來防止數據模型被軟件破壞是一個很好的選擇,該屬性必須是不可複製的。
在插入數據之前向數據庫詢問重複的候選者甚至更好。
最好的是,將兩者結合起來。數據庫模型的安全性和軟件層中重複的問題,因爲a)錯誤處理比查詢要昂貴得多,b)約束保護數據免受人爲失敗的影響。
mysql支持CREATE UNIQUE INDEX語句的唯一索引。例如:CREATE UNIQUE INDEX IDX_FOO ON BAR(X,Y,Z);例如:CREATE UNIQUE INDEX IDX_FOO ON BAR(X,Y,Z);
在表BAR上創建唯一索引。在運行重複查詢時也會使用此索引 - 加快處理速度。
查看MySQL Documentation瞭解更多詳情。
1
當您遇到數據完整性問題時,您希望數據庫執行規則(如果可能)。在你的情況下,你可以使用唯一的索引或唯一的約束來實現,這是同一事物的兩個名字。下面是語法示例:
create unique index idx_table_col1_col2 on table(col1, col2)
你想這樣做,在數據庫中,原因有三:
- 您希望數據庫知道是該列是獨一無二的。
- 您不希望多線程應用程序「意外」插入重複值。
- 您不希望將這些重要的支票放入應用程序,他們可能會「意外」刪除這些支票。
的MySQL則具有非常有用的構建來處理重複,特別是insert . . . on duplicate key update
,insert ignore
和replace
。
當您從應用程序運行SQL查詢時,無論如何您都應該檢查錯誤,因此捕獲重複的鍵錯誤應該不會增加應用程序的負擔。
0
首先,需要是唯一可以使用UNIQUE
約束的任何列:
CREATE TABLE IF NOT EXISTS tableName
(id SERIAL, someUniqueColumnName VARCHAR(255) NOT NULL UNIQUE);
見MySQL文檔for adding uniqueness to existing columns。
您需要決定表中的重複內容,因爲唯一性並不總是侷限於單列。例如,在一個表格中,用戶使用相應的ID存儲其他內容的用戶,則它們可能都是合併的,必須是唯一的。對於您可以有PRIMARY KEY
它採用兩列:
CREATE TABLE IF NOT EXISTS tableName (
id BIGINT(20) UNSIGNED NOT NULL,
pictureId BIGINT(20) UNSIGNED NOT NULL,
someOtherColumn VARCHAR(12),
PRIMARY KEY(id, pictureId));
相關問題
- 1. Django - 防止重複記錄
- 2. 防止SQL Server中的重複記錄
- 3. 防止Access 2013中的重複記錄
- 4. 防止圖表中的數據重複
- 5. 防止重複記錄相關Rails中
- 6. 防止重複登錄記錄
- 7. 防止重複條目數據庫
- 8. 如何防止在數據庫中輸入重複記錄?
- 9. 防止重複的芹菜記錄
- 10. 防止多線程重複記錄
- 11. 如何防止保存重複記錄
- 12. 如何防止插入重複記錄?
- 13. doctrine 2 ODM防止重複記錄
- 14. 如何防止MVC3映射表中的重複記錄?
- 15. 如何防止連接表中的重複記錄
- 16. 如何防止重複記錄在數據庫
- 17. 防止重複的數據庫表條目
- 18. 防止數據庫中的重複項
- 19. 防止重複條目
- 20. 防止多個活動記錄進程插入重複記錄
- 21. 如何防止數據庫中的重複條目
- 22. SQLite3 - 防止重複的條目被輸入到數據庫中
- 23. 如何防止我Access數據庫中的重複條目?
- 24. 如何防止SQL數據庫中的類似(重複)條目?
- 25. 防止C1TrueDBGrid中的重複條目
- 26. 防止ObservableList中的重複條目
- 27. 顯示垂直數據爲水平數據與Oracle防止重複記錄
- 28. 創建T-SQL約束來防止表中的x重複記錄數量?
- 29. MySQL - 通過索引阻止表中的重複記錄?
- 30. 超過50萬條記錄
是在MySQL做一組列'UNIQUE'的 – Daan
檢查插入之前,重複更新 –
使用... https://dev.mysql.com/ doc/refman/5.7/en/insert-on-duplicate.html – donald123