postgresql 修正全部表格的自增id,为最大

浪淘沙2个月前数据库57
SELECT
  format(
    'SELECT setval(%L, COALESCE((SELECT MAX(%I) FROM %I.%I), 1), true);',
    pg_get_serial_sequence(format('%I.%I', n.nspname, c.relname), a.attname),
    a.attname,
    n.nspname,
    c.relname
  ) AS fix_sql
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
JOIN pg_attribute a ON a.attrelid = c.oid
WHERE c.relkind = 'r'
  AND n.nspname = 'jy'
  AND a.attidentity IN ('a','d') OR a.attnum IN (
      SELECT adnum FROM pg_attrdef WHERE adrelid = c.oid
  )
  AND pg_get_serial_sequence(format('%I.%I', n.nspname, c.relname), a.attname) IS NOT NULL;


相关文章

PostgreSQL 里,如果 id in (13,14) 查出来是多行,想把它们合并成一行

SELECT string_agg(name, ',') AS names FROM article_class WHERE&nb...

迁移 qx 表到 qy schema

ALTER TABLE public.qx SET SCHEMA qy;...

PostgreSQL 如果不存在就插入(存在则不插入

按 email 去重插入INSERT INTO users (id, name, email) VALUES (1, '...

ERROR: duplicate key value violates unique constraint "pub_menu_pkey" DETAIL: Key (id)=(1) already

CREATE SEQUENCE rw_fl_id_seq START 1;重新生成序列:如果是自动递增字段,可能需要重置序列,特别是在删除记录之后。例如,执行以...

postgresql 查询每个数据库的OID

SELECT datname AS database_name,        oid ...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。