postgreSQL创建自增的id, postgresql nextval对应增删改查的使用

设置自增id

sql语句创建


-- 删除序列
drop sequence IF EXISTS pipeline_test_id_seq
-- 创建序列 方式1
CREATE SEQUENCE pipeline_test_id_seq START 1;
-- 创建序列 方式2
CREATE SEQUENCE if not exists pipeline_test_id_seq 
INCREMENT 1
MINVALUE 1
MAXVALUE 999999999
START 1
CACHE 1;
-- 创建序列方式3
-- 从1开始,递增幅度1,最大值无上限
create sequence pipeline_test_id_seq increment by 1 minvalue 1 no maxvalue start with 1;


-- 指定序列(给表的主键指定创建好的序列)
alter table test_mergetable alter column "id" set default nextval('pipeline_test_id_seq ')
-- 设置序列自增长从当前最大值开始
SELECT setval('pipeline_test_id_seq ', (SELECT MAX(i_id) FROM test_mergetable))

在这里插入代码片

手动设置将id和gid设置为自动增长

postgreSQL创建自增的id, postgresql nextval对应增删改查的使用_第1张图片

查询

# 查看表dt_pipeline中的gid序列  每查看一次就会增长一次
SELECT nextval('dt_pipeline_gid_seq')
# 查看dt_pipeline中的id序列  每查看一次就会增长一次
SELECT nextval('dt_pipeline_id_seq')

# 查看表dt_node中的gid序列  每查看一次就会增长一次
SELECT nextval('dt_node_gid_seq')  1610727764
# 查看表dt_node中的gid序列  每查看一次就会增长一次
SELECT nextval('dt_node_id_seq')  5936347

重置初始值

SELECT setval('my_sequence', 200);

插入

插入时不用维护自动增长的id和gid

# 插入id gid都使用sequence
insert into dt_node(id, gid, dno, name, projectid) VALUES (nextval('dt_node_id_seq'),nextval('dt_node_gid_seq'),100, 1111, 'thisistest')

# 不新增id 如果设置为sequence它也会自增
insert into dt_node(gid, dno, name, projectid) VALUES (nextval('dt_node_gid_seq'),100, 'dfd', 'thisistest')

# 插入时不用维护自动增长的id和gid
insert into dt_node(dno, name, projectid) VALUES (100, 'dfd', 'thisistest')

更新自增id

# 将id用sequence更新
update dt_node set id=nextval('dt_node_id_seq') where projectid='thisistest'

你可能感兴趣的:(python,数据库,postgre,postgresql,数据库,sql)