我的表格Person
包含Code(varchar)
,Name(varchar)
和Active(bit)
字段。当我搜索Person
时,仅返回活动记录,当我删除Person
时,我设置了Active = false
,以便它不会显示在我的搜索中。
问题是我在Code
和Name
字段中添加了唯一约束,因此每个Person
只能有一个。问题是现在用户没有在搜索中看到Person
(因为它们的活动是假的)并尝试添加相同的Person
但是唯一约束阻止他们这样做。
有没有办法保留唯一约束,也可以添加一个检查Active
,这样如果之前设置为active = false,我仍然可以添加Person
?我知道这里的简单解决方案是完全删除记录,但出于数据目的,我需要保留记录而不是删除它,因此只设置active = false
。
感谢
答案 0 :(得分:2)
没有。如果对字段(或多个字段)应用唯一约束,则可以防止其出现任何重复数据。
从理论上讲,您可以对所有三个字段应用唯一约束,但如果表格中存在同一个人且已被“删除”(具有有效设置),则会阻止您“删除”某个人为假。)
如果您关心的话,我会亲自归档数据,而不是拥有“活动”字段。创建一个新表并在其中插入删除以保存数据并将其从现有的“人员”表中删除。
答案 1 :(得分:-2)
怎么样......
删除约束,并对表进行计数。在插入之前只需对表进行计数,以确保没有重复记录。
亲切的问候