ORACLE外键约束
- 外键约束的定义是,让另一张表的记录来约束自己。这里的另一张表就是主表。
- 当主表的记录删除时,我们可以跟随主表删除记录(ON DELETE CASCADE)、或者相应字段设置为空(ON DELETE SET NULL)、或者不允许删除(默认)。
a) 注意一:当主表被级联删除(DORP TABEL WEN CASCADE CONSTRAINTS)时,从表建立的与主表关联的外键约束将被删除,从表数据不会发生变化。
- 假设从表为另一个表外键约束对应的主表,该外键约束关系不会受到影响。
b) 注意二:从表外键约束指向的主表字段,必须是唯一性约束或主键约束的字段。
- 因为,当外键约束指向的主表记录有重复项时,删除其中之一时,从表伴随操作不明朗。
创建表时创建外键语法:
PRIMARY[?pra?m?ri] 主要的、关键
FOREIGN[?f?r?n] 外键
REFERENCES[?refr?ns]
CONSTRAINT [k?n?stre?nt]:约束、限制、强制
CREATE TABLE WEN
(
MY CHAR(10) NOT NULL,
LOVE CHAR(8) NOT NULL,
PRIMARY KEY (MY),
CONSTRAINT WEN_FK FOREIGN KEY (MY,LOVE)
REFERENCES GUOGUO(MY,LOVE) ON DELETE CASCADE --当主表记录删除时,从表记录伴随删除
)
ON DELETE SET NULL;
当主表记录删除时,设置从表数据为NULL,注意,从表字段必须允许为NULL
不写ON语句时,默认不允许删除主表记录。
修改表时追加外键:
ALTER TABLE WEN
ADD CONSTRAINT WEN_FK FOREIGN KEY(MY,LOVE) REFERENCES GUOGUO(MY,LOVE) ON DELETE CASCADE
ALTER TABLE GUOGUO ADD CONSTRAINT GUOGUO_FK FOREIGN KEY(MY,LOVE) REFERENCES
WEN(MY,LOVE) ON DELETE SET NULL