我有這種情況,我試圖弄清楚如何停止向db中插入重複數據。Mysql初始密鑰和唯一密鑰(防止重複數據)
我有表log
,包括行:
設備ID,時間(這不是一次插入,但其發生的日誌的時間),內容
每個用戶都可以從提交與數據例如其設備ID
123ABC,2013年11月27日1時19分37秒,樣品文本
每個用戶可以使用xml協議從設備提交多達500個日誌。 因此,從控制面板頁面中,我可以選擇用戶(從此設備ID)並查看他們提交的日誌的總數(不同的設備ID,時間),因此我只能看到它們的唯一日誌,例如400個唯一日誌。 但是在後端mysql中他們有多達2000條記錄日誌,並且它們都從400條獨特的日誌中複製了5次。
我不能讓設備ID爲唯一的,因爲1設備可以提交多次,它會停止插入數據,因爲每次可以是相同的設備ID。
我無法組合唯一(設備ID和時間)。我認爲這會工作,但數據不會插入;它拒絕我的查詢。每個數據都有唯一的時間,內容但沒有設備ID ...
我該如何做這項工作?
如果我希望每個用戶繼續提交數據日誌,但不是重複的,並且只有來自同一設備ID的唯一數據日誌。
如果我僅選擇時間和內容作爲唯一索引。如果多個設備提交相同的日誌時間並且內容相同,它有時會失敗...
如何使其對每個設備ID唯一而不是其他設備ID唯一。
和你在你的代碼中有什麼?在將代碼插入數據庫之前,應該防止代碼中出現重複項。您可以在該數據庫表中添加/擁有用戶標識嗎? – Hardy
我做過了,但每個用戶都有一個重置按鈕,每次點擊它時,都會從開始一直重新提交日誌。重置按鈕就像重置時間設置,最近6個月回來,因此它將再次刷新最近6個月的所有日誌。另外,爲了防止日誌丟失,我們的設備上的代碼每次在互聯網連接上ping或超時都會重新提交數據,所以這可能會重複插入。我無法弄清楚這一點。看起來像是出於選擇 –
我認爲問題在於這個要求對你來說並不清楚。 在這種情況下,您無法清楚實施。你能用簡單的話來解釋一下什麼是獨特的嗎? –