sql - apache derby:为列 “GENERATED BY DEFAULT AS IDENTITY”指定ID

标签 sql primary-key derby auto-increment javadb

以下针对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列?

最佳答案

您正在寻找ALTER TABLE ... RESTART WITH。这是文档:

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

关于sql - apache derby:为列 “GENERATED BY DEFAULT AS IDENTITY”指定ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16559345/

相关文章:

mysql - 基于另一个表的主键创建主键

primary-key - DynamoDB : When to use what PK type?

java - 嵌入式 Derby 数据库是否放在 Java jar 中?

mysql - jsp中palette(数据库报表)生成的sql语句没有结果时如何显示错误信息

MySQL 查询从多个表返回 OR-inclusive 关系

sql - Oracle DB引用列名称

C#生成唯一的Guid(不存在于数据库的表中)

tomcat - 无法访问 Tomcat 8 中的嵌入式 Derby

JavaFx:如何在创建 exe 时捆绑外部 jar

sql - 确保仅对在所有 3 个表中都有链接的行计算聚合