[英]How to perform logic delete with unique field in db
我有一张桌子和那些领域
Field 1 > ActivityID (PK, NOT NULL)
Field 2 > Alias (Unique) (NULL)
Field 3 > IsActive (NULL)
我想进行逻辑删除,因为那是我不想删除该行。 我想将IsActive字段更改为0并将Alias字段更改为NULL
但是我的问题是我无法将Alias字段更改为NULL,因为他是唯一的。
当我还需要删除“唯一”字段中的值时,如何使用“唯一”字段进行逻辑删除。
如果您使用的是SQL 2008及更高版本,请使用过滤索引,以使索引中不包含NULL。
在SQL 2005和更早版本中,仅Alias不能具有唯一的约束,可以为NULL且用途很多。 因此,您可以使用计算列技术来解决此问题。 有关更多信息,请参见此答案。
简而言之:你不能。 将一列声明为unique
要求该列中的每个值都是唯一的。 具有多个null
值违反了该约束。
如果我正确理解您的意思。 您的别名字段是唯一的,但允许为空。 这意味着只能有一个带有空值的记录。
如果您需要多个记录来在此字段中具有空值,则需要更改数据库设计,以使Alias字段不是唯一的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.