在SQL中,NULL可以像NOT NULL一样受约束吗?

时间:2011-12-23 15:43:29

标签: sql oracle null constraints

create table t1(ider number null);  

表现如下:

create table t1(ider number check (ider is null));  

create table t1(ider number default null);  

2 个答案:

答案 0 :(得分:11)

你的两个假设都没有。

Oracle在列规范中将NULL视为显式缺少NOT NULL约束。它是CREATE TABLE语句中的(误导性)无操作,但不一定在ALTER TABLE语句中,它可以撤销先前存在的约束。

CREATE TABLE t(col1 TYPE NOT NULL);
ALTER TABLE t MODIFY col1 NULL; -- Now the `NOT NULL` constraint has been dropped

因此,当您使用CREATE TABLE t(c INTEGER NULL)时,并不意味着c应始终为空,也不表示c具有默认值NULL。这只是意味着c为空是正确的

screenshot taken on Tora

答案 1 :(得分:0)

如果你想这样做,你可以!

例如,以下作品..

create table #tempe (
valor int null
)

insert into #tempe values(null)

select * from #tempe
drop table #tempe

但是......为什么? OO