我尝试使用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;
如果我理解正确,这意味着当我关闭对表的完整性检查时,我无法对其执行任何写/修改操作!什么是关闭完整性检查的重点?我需要找到一种方法来做到这一点。
答案 0 :(得分:0)
您不是“使用命令SET INTEGRITY 禁用外键约束”。 SET INTEGRITY OFF
基本上意味着“我不确定这个表格数据的完整性,所以我宁愿限制访问它,直到找出错误的地方”。
要临时禁用外键验证,您可以尝试ALTER TABLE foo ALTER FOREIGN KEY bar NOT ENFORCED
。