請考慮以下事項: 3個表格: 用戶,企業和地址。通過複製將MySQL分開
用戶和企業的行都具有與地址中的行匹配的address_id字段。 由於一個錯誤(與默認值有關)我有一種情況,對於某些地址我有一個用戶和一個企業具有相同的地址ID。
我想將它拆分,以便它在一開始我有
Users.id , Users.address_id
1 , 1
2 , 2
3 , 3
和
Businesses.id , Businesses.address_id
1 , 4
2 , 3
3 , 2
4 , 5
和地址有5列ID = 1〜5等一些信息列(城市國家等)。
我希望當前指向地址(3和2)的用戶(分別爲3和2)所使用的業務2和3將指向地址中的兩個新行,這些行將是原始行的副本。
即 將行6和7分別添加到將分別是行3和行2的副本的地址。 並設置相應Businesses.address_id (即
更新的企業應該是這樣的:
Businesses.id, Businesses.address_id
1 , 4
2 , 6
3 , 7
4 , 5
這樣在地址中的每一行只能由其他兩個表中的一個使用,而數據語義學對保持相同。
如果我的地址不是唯一的,恐怕max可能會有問題。 (當然可以測試)。我正在考慮臨時在original_address_id中添加一列,並在上面提到的階段1中適當填充,然後在階段3中使用它進行更新。 – epeleg
第2步將插入新記錄,因此MAX應該是最近創建的地址。如果你的地址已經有重複的地址,那麼你的權利,我不明白原來的問題。但可能有辦法找到屬於不屬於用戶的業務的地址,而不是插入/使用max來使用該ID。那麼2個業務可以共享相同的地址嗎? – xQbert
我最終使用了步驟1和2,但爲舊ID添加了一個臨時列。這使我可以安全地修改指向舊行的行而不使用max。謝謝您的幫助。 – epeleg