2011-09-28 11 views
19

Chociaż byłem wstawiania danych do tabeli (DB2), mam ten błąd:DB2 SQLCODE -668 podczas wkładania

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

kiedy google, znalazłem, że poprzedni ALTER TABLE próbowała dodać kolumnę do tabeli, która ma procedurę edycji zdefiniowaną przy użyciu czułości atrybutów wiersza. Do tej tabeli nie można dodawać kolumn.

Czy istnieje sposób na ich naprawienie?

Po upuszczeniu i ponownym utworzeniu tabeli mogę ponownie wstawić.

Z góry dziękuję.

Odpowiedz

7

Zgodnie z tym: SQL0668

Zrobiliście jakieś zmiany do tabeli, która wymaga REORG, zanim będzie można dalej zaktualizować tabelę.

Uruchom narzędzie REORG przy stole i powinieneś być w porządku.

+0

Również w DB2 LUW może okazać się, że jest "SET INTEGRITY" jest wymagana po "alter tabeli" lub "ładunek" wystąpiło. – Turophile

37

Aby dodać odpowiedź do Jamesa i zaoszczędzić ludziom czas rozglądać, można wykonać

CALL SYSPROC.ADMIN_CMD('REORG TABLE MY_TABLE_NAME') 

za pośrednictwem dowolnego dostępnego klienta SQL (czyli nawet ponad ODBC lub połączenia JDBC) do naprawienia tego problemu. Jednak połączenie musi być w trybie autocommit i musisz mieć uprawnienia administratora, aby wykonać to polecenie.

Gorąco polecam przeczytać dokumentację na REORG przed jej wywołaniem.

+0

To działa dobrze !! – Shalika

3

CALL SYSPROC.ADMIN_CMD ('REORG Tabela TABLE_NAME') rozwiązuje problem