多列上的SQL条件约束是唯一的

Jim*_*988 3 sql t-sql sql-server

我想对我的数据库有一个条件约束:

在此输入图像描述

您可以看到CreatedBy由于遗留数据问题,我的列中缺少一些条目.

我的新代码确保CreatedBy填写完整.

题:

我想确保没有人可以通过添加条件约束将重复的条目输入到数据库中.定义一行应该是唯一的AnswerID,PollID并且CreatedBy......只有在CreatedBy不为空的情况下才是

它可能看起来像这样:

CONSTRAINT UNIQUE BY AnswerID, PollID, CreatedBy WHERE CreatedBy IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

任何想法,如果可能的话?

Kit*_*124 5

当然,使用过滤索引:

CREATE UNIQUE NONCLUSTERED INDEX <indexName>
    ON <tableName> (AnswerID, PollID, CreatedBy)  
    WHERE CreatedBy IS NOT NULL;  
Run Code Online (Sandbox Code Playgroud)

或者,既然你说"不空",那么这样的事情应该做:

CREATE UNIQUE NONCLUSTERED INDEX <indexName>
    ON <tableName> (AnswerID, PollID, CreatedBy)  
    WHERE CreatedBy IS NOT NULL
      AND CreatedBy <> N''; 
Run Code Online (Sandbox Code Playgroud)

  • 它是......它很漂亮(从脸上撕下来).谢谢,我现在试试吧! (2认同)