我正在使用 sql server 2008 R2 并希望将唯一键约束应用于可空列。此代码运行良好,但如果我有多个列要添加此规则,它将生成尽可能多的“nullbuster”列。
ALTER TABLE tblBranch
ADD nullbuster AS (CASE WHEN column1 IS NULL THEN BranchID ELSE NULL END);
CREATE UNIQUE INDEX UK_Column1 ON tblBranch(column1,nullbuster);
有什么方法可以在不生成新列的情况下实现目标。
编辑:
遵循@marc_s 的建议,在这里创建一个唯一的键约束。目标列是 BranchCode。现在,表中有一条记录的 BranchCode 为 NULL。当我尝试从 c# 插入一条带有 Null BranchCode 的新记录时,它给出了一条错误消息 - 无法为唯一索引 UK_BranchCode 插入重复键。但是,当我在数据库中手动插入一条记录时,它确实接受空值。我哪里错了。
CS
Guid gId = Guid.NewGuid();
cmd = new sqlcommand("insert into tblBranch(BranchId,BranchCode)
values(@BranchId,@BranchCode)",con);
cmd.Parameters.AddWithValue("@BranchId",gId);
cmd.Parameters.AddWithValue("@BranchCode",txtBranchCode.Text);//empty text here
con.Open();
cmd.ExecuteNonQuery();
cmd.Close();