oracle数据库添加外键约束

这篇文章介绍了如何在创建表时设置外键约束,以及在表创建后如何通过ALTERTABLE语句添加外键约束,以确保数据的参照完整性。示例中展示了对学生信息表(student_inf)和班级信息表(class_inf)之间的外键关系设定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 可以在创建表的时候就建立外键约束

create table student_inf 
(
    STUDENTID number not null primary key ,
    STUDENTNAME nvarchar2(20) ,
    GENDER  nvarchar2(20) ,
    IDENTIFIED_STU nvarchar2(20) ,
    ADDRESS nvarchar2(20) ,
    STUDENTIMG nvarchar2(20) ,
    CLASSID number,
    constraint fk_CLASSID foreign key(CLASSID) references class_inf(CLASSID) 
);
  1. 也可以创建表之后建立外键约束

alter table student_inf 
add constraint fk_CLASSID foreign key(CLASSID) references class_inf(CLASSID);

constraint 外键名【说明:外键名一般fk_开头】

foreign key(要设为外键的字段)

references 表2名【说明:与哪个表关联】(表2中的字段名)

### 如何在 Oracle 11g 中通过 SQL 语句为现有表添加约束管理方面,Oracle 提供了灵活的方式来定义和修改表之间的关系。对于已经存在的表,可以通过 `ALTER TABLE` 语句为其添加约束。 以下是具体的语法说明以及示例: #### 添加约束的语法 ```sql ALTER TABLE 子表名 ADD CONSTRAINT 名称 FOREIGN KEY (子表列名) REFERENCES 主表名(主表列名); ``` - **子表名** 是指需要添加约束的目标表。 - **名称** 是自定义的约束名称,用于唯一标识该。 - **子表列名** 表示当前表中的某一列,它将作为关联到另一张表。 - **主表名** 和 **主表列名** 则分别表示被引用的父表及其对应的主或唯一列[^4]。 #### 示例代码 假设存在两张表:`class_inf`(班级信息表)和 `student_inf`(学生信息表)。其中 `student_inf` 的 `CLASSID` 字段应参照 `class_inf` 的 `CLASSID` 字段,则可以执行如下命令: ```sql ALTER TABLE student_inf ADD CONSTRAINT fk_classid FOREIGN KEY (CLASSID) REFERENCES class_inf(CLASSID); ``` 此操作会将 `student_inf.CLASSID` 设置成指向 `class_inf.CLASSID` 的。 如果希望进一步增强数据一致性保障,在创建时还可以附加删除级联选项或其他条件。例如启用 ON DELETE CASCADE 功能以自动清理相关记录: ```sql ALTER TABLE student_inf ADD CONSTRAINT fk_classid FOREIGN KEY (CLASSID) REFERENCES class_inf(CLASSID) ON DELETE CASCADE; ``` 以上方法适用于 Oracle 11g 版本环境下的日常维护工作需求[^3]。 #### 注意事项 当尝试向已有数据的表增加新的约束前,请务必确认目标字段内的值均能匹配上源端所设定的关系规则;否则可能会因违反完整性而失败。此时可能需要先修正不合规的数据或者暂时禁用约束验证过程后再重新激活它们[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值