获取大序列的下一个值并插入
Get next value of big serial and insert
我有以下 table,目前 table 我们手动插入了如下所示的数据,但现在我想将最新的 cola
值插入 table .
create table tbTest
(
cola bigserial not null primary key,
colb varchar(10)
);
insert into tbTest(cola,colb) values(1,'A');
insert into tbTest(cola,colb) values(2,'B');
insert into tbTest(cola,colb) values(3,'C');
insert into tbTest(cola,colb) values(4,'D');
insert into tbTest(cola,colb) values(5,'E');
insert into tbTest(cola,colb) values(6,'F');
现在我只想插入第 colb
列的值,让序列列自行计算下一个值:
尝试 1:
insert into tbTest(colb) values('G')
错误:SQL Error [23505]: ERROR: duplicate key value violates unique constraint "tbtest_pkey" Detail: Key (cola)=(1) already exists.
尝试 2:
insert into tbTest(cola,colb) values(nextval('tbtest_cola_seq'),'G')
错误:SQL Error [23505]: ERROR: duplicate key value violates unique constraint "tbtest_pkey" Detail: Key (cola)=(2) already exists.
尝试 3:
insert into tbTest(cola,colb) values(currval('tbtest_cola_seq')+1,'G');
错误:SQL Error [23505]: ERROR: duplicate key value violates unique constraint "tbtest_pkey" Detail: Key (cola)=(3) already exists.
您必须调整序列以从大于最大现有值的值开始。
第一个
SELECT max(cola) FROM tbtest;
获得最大值。
然后重置序列:
SELECT setval('tbtest_cola_seq', 42);
其中 42 大于第一个查询返回的值。
我有以下 table,目前 table 我们手动插入了如下所示的数据,但现在我想将最新的 cola
值插入 table .
create table tbTest
(
cola bigserial not null primary key,
colb varchar(10)
);
insert into tbTest(cola,colb) values(1,'A');
insert into tbTest(cola,colb) values(2,'B');
insert into tbTest(cola,colb) values(3,'C');
insert into tbTest(cola,colb) values(4,'D');
insert into tbTest(cola,colb) values(5,'E');
insert into tbTest(cola,colb) values(6,'F');
现在我只想插入第 colb
列的值,让序列列自行计算下一个值:
尝试 1:
insert into tbTest(colb) values('G')
错误:SQL Error [23505]: ERROR: duplicate key value violates unique constraint "tbtest_pkey" Detail: Key (cola)=(1) already exists.
尝试 2:
insert into tbTest(cola,colb) values(nextval('tbtest_cola_seq'),'G')
错误:SQL Error [23505]: ERROR: duplicate key value violates unique constraint "tbtest_pkey" Detail: Key (cola)=(2) already exists.
尝试 3:
insert into tbTest(cola,colb) values(currval('tbtest_cola_seq')+1,'G');
错误:SQL Error [23505]: ERROR: duplicate key value violates unique constraint "tbtest_pkey" Detail: Key (cola)=(3) already exists.
您必须调整序列以从大于最大现有值的值开始。
第一个
SELECT max(cola) FROM tbtest;
获得最大值。
然后重置序列:
SELECT setval('tbtest_cola_seq', 42);
其中 42 大于第一个查询返回的值。