插入时db2 SQLCODE -668

时间:2011-09-28 03:36:03

标签: sql db2

当我将数据插入表(db2)时,我收到了这个错误:

Message: Operation not allowed for reason code "7" on 
table "ELSAG.ICGR1106".. SQLCODE=-668, SQLSTATE=57016, DRIVER=3.50.152,...

当我用Google搜索时,我发现之前的ALTER TABLE语句试图将列添加到具有使用行属性敏感度定义的编辑过程的表中。没有列可以添加到此表中。

有没有办法纠正它?

一旦我放下并重新创建表格,我可以再次插入。

提前致谢。

5 个答案:

答案 0 :(得分:43)

为了增加詹姆斯的回答并节省人们四处寻找的时间,你可以执行

CALL SYSPROC.ADMIN_CMD('REORG TABLE MY_TABLE_NAME')

通过任何可用的SQL客户端(即使通过ODBC或JDBC连接)来纠正此问题。但是,连接必须处于自动提交模式,您必须具有管理员权限才能执行此命令。

我强烈建议您在调用之前阅读REORG上的文档。

答案 1 :(得分:7)

根据这个: SQL0668

您已经对表进行了一些更改,需要REORG才能进一步更新表。

对表运行REORG实用程序,你应该没问题。

答案 2 :(得分:3)

CALL SYSPROC.ADMIN_CMD(' REORG TABLE TABLE_NAME')解决了这个问题

答案 3 :(得分:1)

SELECT REORG_PENDING FROM SYSIBMADM.ADMINTABINFO where TABSCHEMA = '<schema_name>' and tabname = '<table_name>';

如果上述查询返回 Y 然后运行以下查询:

call sysproc.admin_cmd('reorg table <schema_name>.<table_name>');

欲了解更多信息,请访问:SQL0668N Operating not allowed for reason code '7'

答案 4 :(得分:0)

我关闭了某些表的完整性检查,然后在更改数据时收到了该错误消息。这在这里生成了帮助的语句:

select 'SET INTEGRITY FOR ' || rtrim(tabname) || ' IMMEDIATE CHECKED;' 
from syscat.tables 
where CONST_CHECKED like '%N%' 
  or status != 'N'
  or access_mode != 'F'
with ur;