2011-09-28 22 views
19

Mientras estaba insertar datos en una tabla (DB2), tengo este error:DB2 SQLCODE -668 al insertar

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

cuando busqué en Google, encontré que la sentencia ALTER TABLE anterior intentó añadir un columna a una tabla que tiene un procedimiento de edición que se define con la sensibilidad de atributo de fila. No se pueden agregar columnas a esta tabla.

¿Hay alguna forma de solucionarlo?

Una vez que dejo caer y vuelvo a crear la tabla, puedo insertar de nuevo.

Gracias de antemano.

Respuesta

7

De acuerdo con esto: SQL0668

Has hecho alguna alteración a la mesa que requiere un REORG antes de poder actualizar la tabla más.

Ejecute la utilidad REORG contra la tabla y debería estar bien.

+0

También bajo LUW DB2 podría ser que un "establecimiento de integridad" se requiere después de "ALTER TABLE" o "CARGA" se ha producido. – Turophile

37

Para añadir a la respuesta de James y salvar a la gente tiempo mirando a su alrededor, se puede ejecutar

CALL SYSPROC.ADMIN_CMD('REORG TABLE MY_TABLE_NAME') 

través de cualquier cliente de SQL disponible (es decir, incluso a través de ODBC o conexión JDBC) para corregir este problema. Sin embargo, la conexión debe estar en modo autocommit y debe tener privilegios de administrador para ejecutar este comando.

Recomiendo leer la documentación en REORG antes de llamar.

+0

¡Esto funciona bien! – Shalika

3

LLAMADA SYSPROC.ADMIN_CMD ('REORG TABLE TABLE_NAME') resuelve el problema