常见的原因是在做 db2 load 的时候,因为可能是先 load 子表,再 load 父表,所以 db2 可能会暂时忽略表之间的外键关系,而把这些表设置为 set integrity pending 状态,需要 DBA 运行 set integrity 命令确认没有冲突的数据
通过实验总结如下:
表完整性约束暂挂问题
报错代码:SQL0668N reason code 1
表状态:Set Integrity Pending
触发原因:
存在主外键的两张表进行数据load时,如果对子表进行数据load,数据库将会暂时忽略表之间的外键关系,将子表置为 set integrity pending 状态(主表状态正常)
解决办法:
如果load的数据在父表中存在,需DBA用户执行:set integrity for tabname immediate checked
如果load的数据在父表中不存在,则需要先新建一张与子表表结构相同的表来存放异常数据:create table tabname_exp like tabname,然后再执行:set integrity for tabname immediate checked for exception in tabname use tabname_exp
新增疑问:
对子表load完成后都会出发set integrity pending,有什么办法既可以使数据load成功又能使表状态保持正常?
收起