《oracle数据库》约束
约束
- 如果不指定约束名,Oracle server 自动按照SYS_Cn的格式指定约束名
- 创建和修改约束:
- 建表的同时
- 建表之后
- 可以在表级或列级定义约束
- 可以通过数据字典视图查看约束
一、 NOT NULL(非空)
只能定义在列级
由于定义了hire_date列不能为空,因此在hire_date列插入空值时会出错。
二、 UNIQUE(唯一:空值除外)
可以定义在表级或列级
三、 PRIMARY KEY(主键)
可以定义在表级或列级
四、 FOREIGN KEY(外键)
只能定义在表级
(1) FOREIGN KEY…REFERENCES
关键字:
- FOREIGN KEY: 在表级指定子表中的列。
- REFERENCES: 标示在父表中的列。
注意:
由于定义了department_id为employee表中的外键与department表中的主键department_id相连接,而在父表中的主键ID10不存在,因此在外键列插入父表主键列不存在的值会出错。
(2) ON DELETE CASCADE(级联删除)
当父表中的列被删除时,子表中相对应的列也被删除。
当删除父表中主键ID为1000的记录时,子表中外键ID为1000的记录也会被删除。
(3) ON DELETE SET NULL(级联置空)
当父表中的列被删除时,子表中相对应的列置空。
当删除父表中主键ID为1000的记录时,子表中外键ID为1000的数据会更新为null。
五、 CHECK(定义每一行必须满足的条件)
可以定义在表级或列级
六、 ALTER TABLE(添加或删除约束)
① 添加或删除约束,但是不能修改约束。
② 有效化或无效化约束。
③ 添加 NOT NULL 约束要使用 MODIFY 语句。
(1) 添加约束
添加not null约束
(2) 删除约束
(3) 无效化约束
在ALTER TABLE 语句中使用 DISABLE 子句将约束无效化。
(4) **约束
在ALTER TABLE 语句中使用ENABLE 子句可将当前无效的约束**。