我用這樣的解決方案:
製作Log
表:
[Log]
ID (bigint IDENTITY(1,1)) PK
Entity_Id (bigint) FK --'Entity' table is list of my tables
Row_Id (bigint) --Is Id of the row of the `Entity`
Kind (int) --0=Create, 1=Modify, 2=Delete, 3=Undelete
actionDate (datetime) --'= GETDATE()'
user_Id (bigint) FK --'User' table is list of users
現在這個查詢給了我行的狀態:
SELECT TOP(1)
Kind,
actionDate,
user_Id
FROM
[Log]
WHERE
Entity_Id = @Entity_Id AND
Row_Id = @Row_Id
ORDER BY
actionDate DESC
至於結果是:
0 => Created by `user` in `actionDate`
1 => [Last] Modified by `user` in `actionDate`
2 => [Last] Deleted by `user` in `actionDate`
3 => [Last] Undeleted by `user` in `actionDate`
注意:
如果您不想清除整個數據庫,請不要刪除任何行。
而當你想刪除在基於關係的機制中做它。
我會用刪除的用戶創建一個新表,這樣出席查詢的工作方式與現在一樣,您只需更改用戶和分支查詢以檢查用戶是否是已刪除用戶的一部分。這是我的2美分 – frenchie
按照你的想法。創建一個新的「IsActive(bit)」列似乎是最好的選擇。 – naveen