检查所有三列是否不为空或为空

Check if all three columns are either not null or null

我有一个包含 4 列的 table:

create table dbo.Table ( 
  Id int not null,
  A int null,
  B int null,   
  C nvarchar (4000) null
)

如何确保 ABC 都是三个 null 或三个 not null

你可以设置一个check constraint:

constraint [check_abc] check ( ([A] is null and [B] is null and [C] is null) or
                               ([A] is not null and [B] is not null and [C] is not null) )

您也可以考虑将这些相关的列分解到第二个 table 中,在其中声明它们 not null 并且只在它们适用的地方插入一行。

create table dbo.Table1( 
  Id int not null primary key
)


create table dbo.Table2( 
  Id int not null primary key references Table1,
  A int not null,
  B int not null,   
  C nvarchar (4000) not null
)