2015-11-05 71 views
0

我正在創建一項調查。我想給人們一個機會去拯救他們迄今爲止的時間已經很長了。我想知道保存數據的最佳做法是什麼。我是否關閉外鍵約束,如果它們沒有選擇所有內容,那麼外鍵約束錯誤將被忽略。在這個例子中,我使用一個ID將文檔錶鏈接到保存他們所選內容的表格。如果他們還沒有選擇一個文件,那麼一個-1作爲一個持有人被插入。或者我創建第二個表來保存保存的地點數據。或者還有第三種選擇。在SQL中保存數據的最佳做法

+2

插入默認值沒有回答,並標記爲未完成的調查? – Shekhar

+0

您不應該禁用FK,而是需要在數據庫中使這些項不是強制的。 – Paddy

+0

我會讓它們爲空。事件表中的DocumentId鏈接到Documents表中的DocumentId,這就是它拋出錯誤的原因。 Shekar的想法很簡單,我幾乎打了耳光,因爲沒有考慮這個選項 – Jeebwise

回答

0

還有第三種選擇。您可以在用戶開始調查時生成主鍵。有兩種方法可以做到這一點:

  • 生成一個數據庫記錄和回讀的主鍵(假定 它是由數據庫生成)
  • 更改主鍵是一個GUID 並簡單地生成代碼中的GUID。
+0

我會馬上抓住生成的密鑰進行整體事件。這只是文件這樣的小事。如果它沒有被選中,那麼我得到一個外鍵約束錯誤。 – Jeebwise

+1

外鍵約束可以爲空。所以,如果你沒有特定的關係,只需將其設置爲空。 (確保列被定義爲允許空值) –

0

好吧,使用-1這種方式意味着您必須在文檔表中具有id爲-1的文檔。如果你沒有一個更好的結構可以將該領域定義爲允許空值。然後你傳入一個空值。

您可能需要閱讀這一點:對於問題 Can a foreign key be NULL and/or duplicate?

相關問題