2011-03-02 73 views
0

删除我有一个表,这些字段如何执行逻辑与独特的领域分贝

Field 1 > ActivityID (PK, NOT NULL) 
Field 2 > Alias (Unique) (NULL) 
Field 3 > IsActive (NULL) 

我想做一个逻辑删除我的意思是,我不希望删除的行。 我想将字段IsActive更改为0并将字段别名更改为NULL

但是我的问题是我无法将别名字段更改为NULL,因为他是唯一的。

当我需要删除唯一字段中的值时,如何使用唯一字段进行逻辑删除。

回答

1

如果您使用的是SQL 2008 &,请使用过滤后的索引在索引中不包含NULL。

SQL 2005和更早版本,别名本身不能有一个唯一的约束,可以是NULLable,并有很大的用处。所以,你可以使用计算列技术来解决这个问题。看到这个答案更多...

How to create a unique index on a NULL column?

+0

坦克... 我希望有一种方法可以做到这一点独特的领域 – Silagy 2011-03-02 06:56:29

0

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

0

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

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