DbUnit:转换外键后将数据插入DB2数据库

时间:2014-08-13 14:27:22

标签: database db2 dbunit

我尝试使用DatabaseOperation.INSERT.execute(...)在DbUnit中将初始数据插入到DB2数据库中,这对某些数据集很有效。但是,为了插入一些数据集,我需要首先禁用外键约束(因为某些数据集中的表可能以错误的顺序列出)。

我使用命令SET INTEGRITY FOR <table_name> OFF禁用外键约束,但是当我在调用该命令后尝试插入数据时,出现此错误:

com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016, SQLERRMC=1;SCHEMA.TABLE, DRIVER=4.17.30

IBM error code explanation在这里没什么用处。在表上设置完整性之后以及在将数据插入该表之前,我需要做些什么吗?

修改

我在OFF语句的文档中找到了这个:&#34;指定将表置于set integrity pending状态。对于处于设置完整性暂挂状态的表,仅允许非常有限的活动。&#34;

如果我理解正确,这意味着当我关闭对表的完整性检查时,我无法对其执行任何写/修改操作!什么是关闭完整性检查的重点?我需要找到一种方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

您不是“使用命令SET INTEGRITY 禁用外键约束”。 SET INTEGRITY OFF基本上意味着“我不确定这个表格数据的完整性,所以我宁愿限制访问它,直到找出错误的地方”。

要临时禁用外键验证,您可以尝试ALTER TABLE foo ALTER FOREIGN KEY bar NOT ENFORCED