首页 > 解决方案 > 仅当另一列具有特定值时才允许 Null

问题描述

我试图仅在某些特定列具有特定值时才允许某些列使用 Null。我怎么做?因此,假设我创建了一个表,最初我希望所有列都不是 NULL,但是如果列中有某个值type,我希望允许R_Min列为 NULL,R_max列为空。

create table Range(
OptionID int,
IndexID int,
PRIMARY KEY(OptionID, IndexID), 
Type varchar(255)NOT NULL,
Name varchar(255)NOT NULL,
RType varchar(255)NOT NULL,
R_Min decimal(19,6)NOT NULL,
R_Max decimal(19,6)NOT NULL,
R2_Min decimal(19,6)NOT NULL,
R2_Max decimal(19,6)NOT NULL,
Boundary decimal(19,6)NOT NULL,
);

标签: sql

解决方案


将列声明为可为空。添加检查约束以仅允许某些 Type 值使用 NULL。

create table Range(
...
Type varchar(255)NOT NULL,
...
R_Min decimal(19,6),
...
check (type = 'certainvalue' or R_Min is not null)
);

推荐阅读