-- Mysql
create table tb(
id int not null PRIMARY KEY auto_increment,
xname varchar(20)
);
select * from tb;
insert into tb(xname) values('a');
insert into tb(xname) values('b');
select * from tb;
insert into tb(id,xname) values(4,'d');
select * from tb;
insert into tb(xname) values('c'); -- 完美,不需要手动修改id
select * from tb;
insert into tb(xname) values('e'); --正常。。。
-- Pgsql
create table tb(
id serial PRIMARY KEY,
xname varchar(20)
);
insert into tb(xname) values('a');
insert into tb(xname) values('b');
select * from tb;
insert into tb(id,xname) values(4,'d');
select * from tb;
insert into tb(xname) values('c'); -- 比mysql完美。。。
select * from tb;
insert into tb(xname) values('e'); -- 坑出现!不会跳过存在id
报错:
ERROR: duplicate key value violates unique constraint "tb_pkey"
DETAIL: Key (id)=(4) already exists.
-- 需要先查出最大id,并再重新设置自增id值
select max(id)+1 from tb;
ALTER SEQUENCE tb_id_seq restart with 5;
select * from tb;
insert into tb(xname) values('e');
select * from tb;