【发布时间】:2010-09-09 08:47:15
【问题描述】:
如果我有一个表结构是:
code, description, isdeleted
其中code 是主键。
用户创建一条记录,然后将其删除。因为我使用软删除,isdeleted 将设置为 true。然后在我的查询中,我将使用 where 子句 and not isdeleted
现在,如果用户创建新记录,他们可能会看到代码“ABC”不存在,因此他们尝试重新创建它。由于 where 子句,select 语句不会找到它。但是会出现主键索引错误。
是否应该允许用户重复使用记录?我认为不会,因为软删除的想法是保留对旧数据查询的记录,以便连接到“已删除”记录仍然有效。如果允许用户重复使用代码,那么他们可以更改可能会更改历史数据视图的描述。但是完全阻止他们使用该代码是否过于苛刻?
或者我应该使用完全隐藏的主键,然后可以重复使用“代码”字段?
【问题讨论】:
标签: database-design soft-delete