Oracle DDL 约束中的 enable 是什么意思?

Mor*_*ive 4 oracle

我的理解是两者之间的不同

NOT NULL 
Run Code Online (Sandbox Code Playgroud)

NOT NULL ENABLE 
Run Code Online (Sandbox Code Playgroud)

是后者也将应用于表中的现有数据。如果那时你是从头开始,这样做有什么意义吗?

NOT NULL ENABLE
Run Code Online (Sandbox Code Playgroud)

谢谢

Mat*_*Mat 8

not null是一个约束。在enable下面,如果你想这个约束是活跃的(这是默认值),它是可选的。所以

NOT NULL
NOT NULL ENABLE
NOT NULL ENABLE VALIDATE
Run Code Online (Sandbox Code Playgroud)

都意味着同样的事情(validate也是默认值,novalidate是另一个选项),所以完全指定它确实没有“优势”(除了可能出于记录目的)。

如果您希望not null禁用该约束,您可以说:

NOT NULL DISABLE -- equivalent to NOT NULL DISABLE NOVALIDATE
Run Code Online (Sandbox Code Playgroud)

或者

NOT NULL DISABLE VALIDATE
Run Code Online (Sandbox Code Playgroud)

有关此主题的详细信息和用例,请参阅指定约束状态文档。