следующие операторы SQL для Apache Derby работает отлично:Apache Derby: определение идентификатора для столбца "генерироваться по умолчанию AS IDENTITY"
connect 'jdbc:derby://uri';
create schema TEST02;
set schema TEST02 ;
create table T
(
id INT not null primary key GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
name varchar(50) not null unique
);
insert into T(name) values ('NAME02');
insert into T(name) values ('NAME03');
select * from T;
drop table T ;
drop schema TEST02 RESTRICT;
disconnect;
выход:
ij> insert into T(name) values ('NAME02');
1 row inserted/updated/deleted
ij> insert into T(name) values ('NAME03');
1 row inserted/updated/deleted
ij> select * from T;
ID |NAME
--------------------------------------------------------------
1 |NAME02
2 |NAME03
, но когда я знаю, 'идентификатор некоторых записей, и я установить идентификатор в моем INSERT заявление:
## here I set the id column
ij> insert into T(id,name) values (1,'NAME01');
1 row inserted/updated/deleted
ij> insert into T(name) values ('NAME02');
ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'SQL130515100041380' defined on 'T'.
ij> insert into T(name) values ('NAME03');
1 row inserted/updated/deleted
ij> select * from T;
ID |NAME
--------------------------------------------------------------
1 |NAME01
2 |NAME03
2 rows selected
, как я могу это исправить, как я могу иметь такое а uto_increment, где я могу, иногда, установить первичный ключ?