SQL唯一约束

时间:2011-09-12 11:47:51

标签: sql constraints

我的表格Person包含Code(varchar)Name(varchar)Active(bit)字段。当我搜索Person时,仅返回活动记录,当我删除Person时,我设置了Active = false,以便它不会显示在我的搜索中。

问题是我在CodeName字段中添加了唯一约束,因此每个Person只能有一个。问题是现在用户没有在搜索中看到Person(因为它们的活动是假的)并尝试添加相同的Person但是唯一约束阻止他们这样做。

有没有办法保留唯一约束,也可以添加一个检查Active,这样如果之前设置为active = false,我仍然可以添加Person?我知道这里的简单解决方案是完全删除记录,但出于数据目的,我需要保留记录而不是删除它,因此只设置active = false

感谢

2 个答案:

答案 0 :(得分:2)

没有。如果对字段(或多个字段)应用唯一约束,则可以防止其出现任何重复数据。

从理论上讲,您可以对所有三个字段应用唯一约束,但如果表格中存在同一个人且已被“删除”(具有有效设置),则会阻止您“删除”某个人为假。)

如果您关心的话,我会亲自归档数据,而不是拥有“活动”字段。创建一个新表并在其中插入删除以保存数据并将其从现有的“人员”表中删除。

答案 1 :(得分:-2)

怎么样......

删除约束,并对表进行计数。在插入之前只需对表进行计数,以确保没有重复记录。

亲切的问候