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);會使字段約束爲可空,不管原來是非空還是可空。

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