如,A、B是一對多,A有n筆B記錄,id為(1,2,3,4),現在提交上來為(3,4,5,6),需要更新A、B關係為(3,4,5,6),我是先把原來的關聯(1,2,3,4)刪除,再插入(3,4,5,6)?還是取出舊數據和新數據比較再更新?
如,A、B是一對多,A有n筆B記錄,id為(1,2,3,4),現在提交上來為(3,4,5,6),需要更新A、B關係為(3,4,5,6),我是先把原來的關聯(1,2,3,4)刪除,再插入(3,4,5,6)?還是取出舊數據和新數據對比再更新?
在沒有索引的情況下,我會採用先delete
後insert
。
但在有索引的情況下,我會採取以下方式先update
後insert
:
在關係表上加上is_deleted
字段,預設 0,is_deleted
用來標註關係是否解除.
執行SQL
(同一關係,只會存在一筆記錄)
<code>> `UPDATE table SET is_deleted = 1 WHERE id1=A;` > `REPLACE INTO table (id1, id2, is_deleted) VALUES('A',3,0), ('A',4,0);` </code>
比較方式程式碼複雜,新增資料項目就是小災難,難以維護
你問題中提到的全刪,全插入
刪除單一關係式新增單一關係做單獨介面,
每次刪除關係操作新增關係操作 呼叫對應的單獨介面
簡單粗暴,先刪後插。
比較推薦的是取出舊數據進行比較。
先刪再插,同時加一個存檔字段,存成字串,用特殊符號隔開這次和前面的關係,追加。