Oracle创建外键约束

1. 创建表时创建外键

CREATE TABLE T1
   (employee_id     NUMBER(4), 
    last_name       VARCHAR2(10), 
    job_id          VARCHAR2(9), 
    salary          NUMBER(7,2), 
    department_id   CONSTRAINT fk_deptno 
                    REFERENCES T2(department_id) ); 

其中T2叫父表,T1叫子表。

注意事项:

  1. 父子表中相应列的数据类型必须一致,列名可以不同;
  2. 父表字段必须是主键或者唯一键;
  3. 子表中外键的值必须在父表中,否则会报错:未找到父项关键字。

2. 修改时创建外键约束

有三种形式的外键约束:

2.1 普通外键约束

如果存在子表引用父表主键,则无法删除父表记录

ALTER TABLE T1 ADD CONSTRAINT FK_INVOICE_ID FOREIGN KEY(INVOICE_ID ) REFERENCES T2 (ID);

2.2 级联外键约束

可删除存在引用的父表记录,而且同时把所有有引用的子表记录也删除

ALTER TABLE T1 ADD CONSTRAINT FK_INVOICE_ID FOREIGN KEY(INVOICE_ID ) REFERENCES T2(ID) ON DELETE CASCADE;

2.3 置空外键约束

可删除存在引用的父表记录,同时将子表中引用该父表主键的外键字段自动设为NULL,但该字段应允许空值
ALTER TABLE T1 ADD CONSTRAINT FK_INVOICE_ID FOREIGN KEY(INVOICE_ID ) REFERENCES T2(ID) ON DELETE SET NULL;

3. 启用/禁用外键

DISABLE(禁用) | ENABLE (启用)CONSTRAINT constraint_name

4. 删除外键约束

drop constraint constraint_name;

5. 其他

创建主键:
ALTER TABLE T1 ADD CONSTRAINT PK_T1_ID PRIMARY KEY(ID);

你可能感兴趣的:(数据库,外键,Oracle)