簡體   English   中英

如果我首先獲得多對多關系數據,如何將它們插入表中?

[英]If I got many to many relationship data first, how do I insert them to my table?

假設我有一個客戶表,一個產品表和一個訂單表來記錄誰買東西,訂單表基本上有兩個外鍵,customer_id和product_id。

現在,我首先獲得了訂單信息,在其中無法在本地數據庫中找到客戶信息。 事實證明,這是一個新客戶,其信息將稍后從另一個線程/隊列中獲取。 更糟糕的是,我從訂單信息中獲得的客戶ID與我在本地使用的ID不同。 我的本地客戶ID是INTEGER PRIMARY KEY(我確實將“真實客戶ID”記錄為另一列,並在其上設置了索引)

那么如何記錄此訂單信息? 我可以提出一些笨拙的解決方案,例如,如果找不到聯系信息,我會先為其插入一條記錄。 稍后,當我獲得該客戶的真實信息后,我將更新客戶和訂單表。 但是我想知道這種情況是否有“標准”方式?

插入NULL值,然后稍后再更新實際值非常簡單,並且可以正常工作(如果您沒有NOT NULL約束)。 您應該使用事務,以便並發用戶不會看到不完整的數據。

您可以使用延遲的外鍵約束

如果一條語句修改了數據庫的內容,使得違反了延遲的外鍵約束,則不會立即報告該違反。 直到事務嘗試提交,才檢查延遲的外鍵約束。 只要用戶有未清交易,就允許數據庫以違反任何數量的延遲外鍵約束的狀態存在。

但是,僅當您插入違反約束的值時,延遲外鍵約束才有用。 NULL值不視為FK違反。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM