1 级联删除
Oracle在外键的删除上有NO ACTION(类似RESTRICT)、CASCADE和SET NULL三种行为。
下面以学生-班级为例说明不同情况下的外键删除,学生属于班级,班级的主键是学生的外键。
-- 班级表
CRATE TABLE TB_CLASS
(
ID NUMBER NOT NULL, --班级主键
NAME VARCHAR2(50), --班级名称
CONSTRAINT PK_TB_CLASS PRIMARY KEY (ID)
);
-- 学生表
CREATE TABLE TB_STUDENT
(
ID NUMBER NOT NULL, --学生主键
NAME VARCHAR2(50), --学生姓名
CLASS_ID NUMBER, --学生所属班级,外键
--主键约束
CONSTRAINT PK_TB_STUDENT PRIMARY KEY (ID),
--外键约束
--设置级联删除为NO ACTION
CONSTRAINT FK_TB_STUDENT_CLASS_ID FOREIGN KEY (CLASS_ID) REFERENCES TB_CLASS (ID)
);
-- 添加班级数据
INSERT INTO TB_CLASS (ID, NAME) VALUES (1, '一班');
INSERT INTO TB_CLASS (ID, NAME) VALUES (2, '二班');
INSERT INTO TB_CLASS (ID, NAME) VALUES (3, '三班');
-- 添加学生数据
INSERT INTO TB_STUDENT (ID, NAME, CLASS_ID) VALUES (1, '小明', 1);
INSERT INTO TB_STUDENT (ID, NAME, CLASS_ID) VALUES (2, '小刚', 1);
INSERT INTO TB_STUDENT (ID, N

本文详细介绍了Oracle中外键在级联删除时的三种行为:NO ACTION、SET NULL和CASCADE,并通过学生-班级的例子进行了示例说明。同时,文章探讨了Oracle不直接支持的级联更新,提出了利用延迟约束和触发器实现类似效果的方法。
最低0.47元/天 解锁文章
1420

被折叠的 条评论
为什么被折叠?



