1. 创建序列
CREATE SEQUENCE verifac_software_info_id; -- 序列
2 修改序列所有者为 postgres(与表一致)
ALTER SEQUENCE verifac_software_info_id OWNER TO postgres; -- 序列
3. 修改现有表的主键为使用序列
ALTER TABLE "public"."verifac_software_info" -- 表
ALTER COLUMN "id" SET DEFAULT nextval('verifac_software_info_id'); -- 主键字段名 + 序列
4. 将序列的当前值设置为表中最大ID+1
SELECT setval('verifac_software_info_id', COALESCE(MAX("id"), 0) + 1) -- 序列 + 主键字段名
FROM "public"."verifac_software_info"; -- 表
5. 将序列与表列关联
ALTER SEQUENCE verifac_software_info_id -- 序列
OWNED BY "public"."verifac_software_info"."id"; -- 表 + 主键字段名
------------------------------------- 异常处理 ---------------------------------------------
6 查看序列和表的所有者
SELECT schemaname, sequencename, sequenceowner
FROM pg_sequences
WHERE sequencename LIKE '%tenant_tenant_id_seq%';
7 查看所有表的所有者(过滤public模式)
SELECT
tablename,
tableowner,
schemaname
FROM pg_tables
WHERE schemaname = 'public'
ORDER BY tableowner, tablename;
8 查看特定表的所有者
SELECT
tablename,
tableowner,
schemaname
FROM pg_tables
WHERE tablename = 'sys_tenant_rigister_pay';
8.1 修改表的所属
ALTER TABLE erp_print_config OWNER TO postgres;s
9 查看序列名称
SELECT sequencename FROM pg_sequences
WHERE sequencename LIKE '%tenant_rigister_pay%';
-- 修改序列所有者为 postgres(与表一致)
ALTER SEQUENCE tenant_rigister_pay_pay_id_seq OWNER TO postgres;