如果我有一個表結構是:重新使用軟刪除的記錄
code, description, isdeleted
其中code
是主鍵。
用戶創建一個記錄,然後再刪除它。因爲我正在使用軟刪除,所以isdeleted
將被設置爲true。然後在我的查詢中,我將使用where子句進行選擇and not isdeleted
現在,如果用戶創建新記錄,他們可能會看到代碼'ABC'不存在,因此他們試圖重新創建它。由於where子句,select語句不會找到它。但是會有主鍵索引錯誤。
應該允許用戶重新使用該記錄嗎?我認爲不會,因爲軟刪除的想法是保留對舊數據的查詢記錄,以便連接到「已刪除」的記錄仍然有效。如果允許用戶重新使用代碼,則他們可以更改可能會改變歷史數據視圖的描述。但是阻止他們使用該代碼太苛刻了嗎?
或者我應該使用一個完全隱藏的主鍵,然後'code'字段可以重新使用?