DB2数据库导致表为什么会出现set integrity pending,原因有哪些?
通过实验总结如下:
表完整性约束暂挂问题
报错代码: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成功又能使表状态保持正常?