Oracle插入表数据触发Integrity Constraint violated错误求解
问题原因
- 你抛出的完整性约束错误是外键校验失败导致的,
kontoägare表设置了两个外键规则:pnr字段必须匹配bankkund表中已存在的pnr值knr字段必须匹配konto表中已存在的knr值
- 除此之外
konto表本身也有外键关联kontotyp表的ktnr字段,插入konto记录前也要保证kontotyp中有对应数据 - 你没有提前在关联的父表中插入对应记录,直接往子表
kontoägare插数据就会触发约束报错,Oracle环境下该场景对应的错误码通常为ORA-02291。
解决步骤
- 先向
kontotyp表插入你后续要用到的账户类型数据,可根据自身业务调整字段值:
INSERT INTO kontotyp(ktnr, 其他业务字段) VALUES(1001, ...); INSERT INTO kontotyp(ktnr, 其他业务字段) VALUES(1002, ...); COMMIT;
- 向
bankkund表插入你要用到的两个客户记录:
INSERT INTO bankkund(PNR, FNAMN, ENAMN, PASSWD) VALUES('540126-1111', '张三', 'Test1', 'pwd123456'); INSERT INTO bankkund(PNR, FNAMN, ENAMN, PASSWD) VALUES('691124-4478', '李四', 'Test2', 'pwd789012'); COMMIT;
- 向
konto表插入你要用到的三个账户记录,注意ktnr要和第一步插入kontotyp的ktnr值对应:
INSERT INTO konto(KNR, KTNR, REGDATUM, SALDO) VALUES(123, 1001, SYSDATE, 1000.00); INSERT INTO konto(KNR, KTNR, REGDATUM, SALDO) VALUES(5899, 1001, SYSDATE, 2500.50); INSERT INTO konto(KNR, KTNR, REGDATUM, SALDO) VALUES(8896, 1002, SYSDATE, 5000.00); COMMIT;
- 再执行你原本的
kontoägare插入语句即可正常运行。
内容的提问来源于stack exchange,提问作者S.J.
相关产品推荐
相关产品推荐

