如果我有一个表结构是:重新使用软删除的记录
code, description, isdeleted
其中code
是主键。
用户创建一个记录,然后再删除它。因为我正在使用软删除,所以isdeleted
将被设置为true。然后在我的查询中,我将使用where子句进行选择and not isdeleted
现在,如果用户创建新记录,他们可能会看到代码'ABC'不存在,因此他们试图重新创建它。由于where子句,select语句不会找到它。但是会有主键索引错误。
应该允许用户重新使用该记录吗?我认为不会,因为软删除的想法是保留对旧数据的查询记录,以便连接到“已删除”的记录仍然有效。如果允许用户重新使用代码,则他们可以更改可能会改变历史数据视图的描述。但是阻止他们使用该代码太苛刻了吗?
或者我应该使用一个完全隐藏的主键,然后'code'字段可以重新使用?