繁体   English   中英

如何在数据库中使用唯一字段执行逻辑删除

[英]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且用途很多。 因此,您可以使用计算列技术来解决此问题。 有关更多信息,请参见此答案。

如何在NULL列上创建唯一索引?

简而言之:你不能。 将一列声明为unique要求该列中的每个值都是唯一的。 具有多个null值违反了该约束。

如果我正确理解您的意思。 您的别名字段是唯一的,但允许为空。 这意味着只能有一个带有空值的记录。

如果您需要多个记录来在此字段中具有空值,则需要更改数据库设计,以使Alias字段不是唯一的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM