DB2 Jboss Autoincrement
Grzes_P - 03-03-2007 00:02
DB2 Jboss Autoincrement
Witam zrobiłem sobie beana CMP na jedną tebelę w bazie DB2. Całość postawiłem na serwerze Jboss Tabela ma trzy pola:
ID - Autoincrement Integer NAZWA - VArchar(30) ILOSC - Integer
i po dodaniu rekordu wywala błąd.
com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -798, SQLSTATE: 428C9, SQLERRMC: ID
błąd dotyczy polecenia INSERT w którym nie powinno być pola ID .
Artur - 03-03-2007 00:02
Grzes_P:
jeśli w linii poleceń DB2 wpiszesz: db2 ? SQL0798N, dostaniesz wyjaśnienie
SQL0798N Dla kolumny "<nazwa-kolumny>", która została zdefiniowana jako GENERATED ALWAYS, nie można określić wartości.
Czyli, jeśli definicja tabeli wygląda tak:
id integer generated always as identity, nazwa varchar(30), ilosc integer
to, przy wstawieniu musisz pominąć pole id.
Jeśli zmienisz atrybut ALWAYS na BY DEFAULT, wtedy będziesz mógł wstawić jawnie wartość, a jeśli pominiesz wartość, wtedy baza wygeneruje ją dla Ciebie.
alter table twoja_tabela alter column id set generated by default;
Jeśli chcesz pobrać wygenerowaną przez bazę wartość, najlepiej zrobić to przy wstawieniu, poprzez tzw. select z operacji modyfikacji danych.
select id from new table ( insert into twoja_tabela (nazwa, ilosc) values ('Nazwa', 999) ) as t;
PS. Sprawdź definicję tabeli: db2look -d twoja_baza -e -t twoja_tabela
-- Artur Wroński
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
db2 alter table alter column set default
[SQLITE] kilka =?ISO-8859-2?Q?p=F3l_autoincrement_lub_sekw?==?ISO-8859-2?Q?encje?=
=?ISO-8859-2?Q?Re:_DB2_-_niesp=F3jne_zapytanie_wg._asktom.oracle.com?=
Oracle XE lub DB2 Express-C i wspolpraca z Visual C# 2005 Expess Edition
IBM DB2 Express - czy podobnie jak Oracle Expreess ma wycieta Javew procedurach?
Re: DB2 za darmo - =?ISO-8859-2?Q?troch=EA_wi=EAcej?=
=?ISO-8859-2?Q?db2_obj=EAto=B6=E6_bazy?=
[db2] Update sql posiłkowany danymi z innej tabeli
=?iso-8859-2?q?Konfiguracja_domy=B6lna_DB2_Express-C?=
[DB2/Websphere]: JDBC - result set closed
zanotowane.pldoc.pisz.plpdf.pisz.plred-hacjenda.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|