第一步
create table customer(
customerid varchar2(32) primary key,
name varchar2(32));
create table recomment(
recommentId varchar2(32) primary key,
content varchar2(128),
customerid varchar2(32));
alter table recomment
add constraint fk_r_c
foreign key(customerid)
references customer(customerid)
on delete cascade
第二步,
然后customer表中存入('1','test')
recomment表中存入('1','test','1')
第三步,
删除 customer表中的记录会出现错误
违反完整约束条件 (SYSTEM.FKE10E20AC36D8F789) - 已找到子记录日志
有时候对Oracle某个表的数据做修改的时候,会报错:ORA-02292: 违反完整约束条件 (用户名.约束名) - 已找到子记录
原因: 数据库中有个表的设了外键来参照现在的表
解决方法:
违反的不是你定义的外键约束,而是这样一个系统命名的约束:SYSTEM.FKE10E20AC36D8F789。
检查一下他是怎么形成的。
举个例子,假如要删除customer表中customerid=‘1’的记录,必须先删除recomment表中customerid=‘1’的相应的记录,才可以删除customer表的对应记录。
也可以在customer建一个触发器,但是思路也是先删除recomment表中的记录,再删除customer表中的记录。。。