2

Apache derby の次の SQL ステートメントは正常に動作します。

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      

しかし、いくつかのレコードの ID を「知っている」場合、INSERT ステートメントで ID を設定します。

## 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

どうすればこれを修正できますか?主キーを設定できる auto_increment 列を作成するにはどうすればよいですか?

4

1 に答える 1

1

探しているのは ALTER TABLE ... RESTART WITH です。ドキュメントは次のとおりです。

http://db.apache.org/derby/docs/10.9/ref/rrefsqlj81859.html#rrefsqlj81859__rrefsqlj37860

于 2013-05-15T14:10:55.963 に答える