2013-05-15 2 views
2

Les instructions SQL suivantes pour derby apache fonctionne très bien:derby apache: en spécifiant un ID pour une colonne "GÉNÉRÉ PAR DÉFAUT qu'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; 

sortie:

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  

mais quand je sais l'id de certains dossiers, et je l'id mis dans mon instruction 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 

comment puis-je résoudre ce problème, comment puis-je avoir un un colonne uto_increment où je peux, parfois, définir la clé primaire?

Répondre

Questions connexes