NOT NULL约束和CHECK之间的区别(attr不为null)

Mar*_*ero 2 database oracle isnull

我想为alter key(NOT NULL + UNIQUE)创建一个轮廓约束,但我认为NOT NULL约束不能放置轮廓,因此,我认为我必须选择:

  • 大纲约束: CHECK(attr IS NOT NULL)
  • 内联约束NOT NULL+轮廓约束UNIQUE(attr)

将内联约束NOT NULL设置为列并添加约束之间是否有任何区别CHECK (column IS NOT NULL)

提前致谢

Jus*_*ave 5

定义列NOT NULL是首选方法.将在指示DBA_TAB_COLS,ALL_TAB_COLS以及USER_TAB_COLS数据字典视图,例如,该列是不NULLABLE.这也是传统的方法,因此未来的开发人员更可能期望NOT NULL在不可能的列上定义约束NULL.

正如您可以定义UNIQUE约束以及NOT NULL约束而不是创建PRIMARY KEY约束一样,您可以定义CHECK约束而不是NOT NULL约束.从功能的角度来看,这两种方法都将以相同的方式工作.但是数据字典视图将以不同方式显示这些方法,因此依赖于数据字典的工具可能会略有不同.而传统方法更有可能成为未来开发人员将会看到和期待而不是感到惊讶的东西.