PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgres:Perbarui urutan kunci utama untuk semua tabel

di sini adalah plpgsql untuk mengatur ulang semua urutan (jalankan di pgadmin atau psql atau klien lain):

do 
$$
declare
 _r record;
 _i bigint;
 _m bigint;
begin
  for _r in (
    SELECT relname,nspname,d.refobjid::regclass, a.attname, refobjid
    FROM   pg_depend    d
    JOIN   pg_attribute a ON a.attrelid = d.refobjid AND a.attnum = d.refobjsubid
    JOIN pg_class r on r.oid = objid
    JOIN pg_namespace n on n.oid = relnamespace
    WHERE  d.refobjsubid > 0 and  relkind = 'S'
   ) loop
    execute format('select last_value from %I.%I',_r.nspname,_r.relname) into _i;
    execute format('select max(%I) from %s',_r.attname,_r.refobjid) into _m;
    if coalesce(_m,0) > _i then
      raise info '%',concat('changed: ',_r.nspname,'.',_r.relname,' from:',_i,' to:',_m); 
      execute format('alter sequence %I.%I restart with %s',_r.nspname,_r.relname,_m+1);
    end if;
  end loop;

end;
$$
;

atau gunakan solusi lain yang diusulkan di Bagaimana cara mengatur ulang urutan kunci utama postgres ketika tidak sinkron?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Relasi dbo.MyTable tidak ditemukan saat skema dan tabel ada

  2. Temukan ukuran byte baris di PostgreSQL

  3. UPDATE seluruh baris di PL/pgSQL

  4. Bagaimana cara memutakhirkan database postgresql dari 10 menjadi 12 tanpa kehilangan data untuk proyek terbuka

  5. Menggabungkan jsonArrayAgg untuk mengosongkan array di jOOQ