informix和oracle中对于NULL约束设置的比较

创建xxx表,两个字段yyy,zzz, 都是可空。

create table xxx (yyy integer, zzz decimal(10));

 

1.语法

改字段为非空的语法相同,都是: alter table xxx modify (yyy integer not null);

 

改字段为可空的语法不同:

oracle为:alter table xxx modify (yyy integer null);

 

informix:alter table xxx modify (yyy integer);

如果带上null则报错-201,语法错误。

 

2.更改语句重复执行的表现

informix:上面两种情况的语句都可以重复执行,即原来可空的还可以指定为可空,原来非空的也可以继续指定为非空。

 

oracle:不能重复执行,重复执行报错. 原来为空的话指定为空的话报ora-1451错误,原来非空的指定为非空的话,报ora-1442错误。

 

3.不带null时的不同表现

oracle: 如果执行alter table xxx modify (yyy integer);那么yyy字段的可空还是非空约束不发生变化,原来是什么还是什么。

 

informix:如第1点和第2所述,alter table xxx modify (yyy integer);会使字段约束为可空,不管原来是非空还是可空。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章