Oracle给已有数据的表修改外键约束
这是Oracle中的几种约束状态,当我们在修改约束时,可以一起修改也可以全部修改,如下所示:
alter table T_STUDENT disable constraints T_STUDENT_CLAZZ_FK
其中table后面是我们约束所在的表,disable代表我们不启用这个约束,后续插入数据的时候不会在进行外键的验证。
alter table T_STUDENT enable novalidate constraints T_STUDENT_CLAZZ_FK
这条语句则代表我们启用该外键,但是不验证之前的历史数据。
其中一个注意的点就是如果我们使用enable而没有指定后边的novalidate时,enable默认的是后边添加的validate,也就是会校验数据表中的历史数据,如果数据表中历史数据有问题的话,就会出现为找到违反完整约束条件,未找到父项关键字。
查看所有约束数据:
执行如下语句
SELECT * FROM user_constraints
会看到如下的查询结果界面: