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
默认情况下处于启用状态.
我可以假设它只是为了启用以前被禁用的东西吗?
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会自动启用约束.
约束用于确保数据完整性,但有些情况我们可能需要禁用它们.
禁用约束
要强制执行完整性约束定义的规则,应始终启用约束.但是,请考虑暂时禁用表的完整性约束,原因如下:
将大量数据加载到表中时
执行对表进行大量更改的批处理操作时(例如,通过向现有编号添加1000来更改每个员工的编号)
一次导入或导出一个表时
在所有这三种情况下,暂时禁用完整性约束可以提高操作性能,尤其是在数据仓库配置中.
在禁用该约束时,可以输入违反约束的数据.因此,在完成前面的项目符号列表中列出的任何操作后,应始终启用约束.
有效使用完整性约束:程序
按以下顺序使用完整性约束状态可确保获得最佳效益:
禁用状态.
执行操作(加载,导出,导入).
启用无效状态.
按此顺序使用约束的一些好处是:
没有锁.
所有约束都可以同时启用状态.
约束启用是并行完成的.
允许在表上进行并发活动.
编辑:
问题是为什么在默认情况下打开时使用明显的关键字:
我会说:
这与以下类别相同:
CREATE TABLE tab(col INT NULL)
Run Code Online (Sandbox Code Playgroud)
为什么我们使用NULL
if列默认为可为空.