我有一个要进行逻辑删除的表。我有专栏Name
和专栏Is_Active
。Name
是varchar
和Is_active
是bool
。
我无法使它Name
唯一,因为将有多个具有相同名称的行。在哪里Is_Active == False
。
我需要确保在任何时候只有一个记录的Name
地方Is_Active == True
。
有办法吗?还是有人可以提出更好的方法?
您可以在数据库级别创建唯一的过滤索引:
CREATE UNIQUE INDEX UQ_EmployeeName
ON Employee (Name)
WHERE Is_Active = 1
上述索引将不允许重复记录,例如('Bob', 1)
。它将使虽然记录喜欢('Bob', 1)
,('Bob', 0)
在你的数据库并存。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句