在oracle数据库语句中使用ENABLE关键字的原因是什么?

Lom*_*bas 5 sql database oracle keyword

我想知道在以下语句中使用ENABLE关键字的优点或用处是什么?

CREATE TABLE "EVALUATION" (
    "EVALUATION_ID" NUMBER(20, 0) NOT NULL ENABLE,
Run Code Online (Sandbox Code Playgroud)

要么

ALTER TABLE "EVALUATION"
ADD CONSTRAINT("EVALUATION_FK")
FOREIGN KEY ("CREW_ID")
REFERENCES "CREW" ("CREW_ID") ENABLE;
Run Code Online (Sandbox Code Playgroud)

对于我在文档中阅读的内容,ENABLE默认情况下处于启用状态.

我可以假设它只是为了启用以前被禁用的东西吗?

Luk*_*zda 6

Constraint doc:

在此输入图像描述

CREATE TABLE "EVALUATION" (
    "EVALUATION_ID" NUMBER(20, 0) NOT NULL ENABLE,
Run Code Online (Sandbox Code Playgroud)

ENABLE/DISABLE表示约束已打开或关闭.默认ENABLE使用.

ENABLE子句如果要将约束应用于表中的数据,请指定ENABLE.

DISABLE子句指定DISABLE以禁用完整性约束.禁用的完整性约束与启用的约束一起出现在数据字典中.如果在创建约束时未指定此子句,Oracle会自动启用约束.

约束用于确保数据完整性,但有些情况我们可能需要禁用它们.

Managing Integrity:

禁用约束

要强制执行完整性约束定义的规则,应始终启用约束.但是,请考虑暂时禁用表的完整性约束,原因如下:

  • 将大量数据加载到表中时

  • 执行对表进行大量更改的批处理操作时(例如,通过向现有编号添加1000来更改每个员工的编号)

  • 一次导入或导出一个表时

在所有这三种情况下,暂时禁用完整性约束可以提高操作性能,尤其是在数据仓库配置中.

在禁用该约束时,可以输入违反约束的数据.因此,在完成前面的项目符号列表中列出的任何操作后,应始终启用约束.

有效使用完整性约束:程序

按以下顺序使用完整性约束状态可确保获得最佳效益:

  1. 禁用状态.

  2. 执行操作(加载,导出,导入).

  3. 启用无效状态.

    按此顺序使用约束的一些好处是:

    • 没有锁.

    • 所有约束都可以同时启用状态.

    • 约束启用是并行完成的.

    • 允许在表上进行并发活动.

编辑:

问题是为什么在默认情况下打开时使用明显的关键字:

我会说:

  1. 为清楚起见(Python EIBTI规则显式优于隐式)
  2. 为了完整性
  3. 个人品味和/或编码惯例

这与以下类别相同:

CREATE TABLE tab(col INT NULL)
Run Code Online (Sandbox Code Playgroud)

为什么我们使用NULLif列默认为可为空.