首頁  >  文章  >  後端開發  >  php如何處理新舊關聯關係

php如何處理新舊關聯關係

WBOY
WBOY原創
2016-12-01 00:25:341682瀏覽

如,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)?還是取出舊數據和新數據對比再更新?

在沒有索引的情況下,我會採用先deleteinsert
但在有索引的情況下,我會採取以下方式先updateinsert

  1. 在關係表上加上is_deleted字段,預設 0,is_deleted用來標註關係是否解除.

  2. 執行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>

比較方式程式碼複雜,新增資料項目就是小災難,難以維護

方式1:

你問題中提到的全刪,全插入

方式2:

刪除單一關係式新增單一關係做單獨介面,
每次刪除關係操作新增關係操作 呼叫對應的單獨介面

簡單粗暴,先刪後插。

比較推薦的是取出舊數據進行比較。

先刪再插,同時加一個存檔字段,存成字串,用特殊符號隔開這次和前面的關係,追加。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn