Hei*_*ich 24 sql constraints notnull
我很想知道是否有可能在sql中创建一个条件非空约束?换句话说,可以创建一个约束,使得列B可以为空,因为列A包含让我们说"新",但如果列A的内容更改为其他内容,则不再允许列B为空?
为了扩展,只要列A表示"新",就可以使列B必须为空或为空?
谢谢大家:D
Mic*_*uen 30
这对于CONSTRAINT CHECK来说非常好.这样做:
需求:
是否有可能创建一个约束,使得列B可以为空,因为列A包含让我们说"新",但如果列A的内容更改为其他内容,则不再允许列B为空?
注意短语:列B 可以为空
解:
create table tbl
(
A varchar(10) not null,
B varchar(10),
constraint uk_tbl check
(
A = 'NEW' -- B can be null or not null: no need to add AND here
OR (A <> 'NEW' AND B IS NOT NULL)
)
);
Run Code Online (Sandbox Code Playgroud)
您可以进一步简化它:
create table tbl
(
A varchar(10) not null,
B varchar(10),
constraint uk_tbl check
(
A = 'NEW'
OR B IS NOT NULL
)
);
Run Code Online (Sandbox Code Playgroud)
要求与上述要求互不相符:
为了扩展,只要列A表示"新",就可以使列B必须为空或为空?
请注意短语:列B 必须为空
create table tbl
(
A varchar(10) not null,
B varchar(10),
constraint uk_tbl check
(
(A = 'NEW' AND B IS NULL)
OR A <> 'NEW'
)
);
Run Code Online (Sandbox Code Playgroud)
可以简化这个,更简单,但可能不像上面那样可读:
create table tbl
(
A varchar(10) not null,
B varchar(10),
constraint uk_tbl check
(
A <> 'NEW'
OR B IS NULL
)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16894 次 |
| 最近记录: |