-1

我有一个只有 1 个主列(nvarchar)的表,就像在设计器中一样,它被标记为主键并且不允许空值。但是不知何故,该表中有一行键值为空,它当然不是空的,并且不会与主键列中的任何其他行重复,并且没有发生任何冲突或违规。

但是据我所知,SQL Server 中的主列不允许使用这种值(空)。我想知道是否有任何选项可以打开以使其正常工作。或者我必须自己通过 CHECK 约束或在 C# 代码中检查值(在更新之前)。

您的帮助将不胜感激。谢谢!

4

1 回答 1

2

“空字符串”是长度为零的字符串。它不是 NULL,因此它不违反空检查。它肯定是 SQL Server 中基于字符的主键列的允许值。如果业务不允许空字符串值,则检查约束将是将其作为业务规则实现的最佳方式。这样,可能不知道规则的客户就不能违反它。

此代码在 SQL Server 中运行时没有违规,我只是为了确定而对其进行了测试。

create table TestTable (
  myKey varchar(10) primary key,
  myData int
)
GO

insert TestTable
select '', 1
于 2013-04-26T22:26:32.953 回答