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