PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgre:Актуализирайте последователността от първичен ключ за всички таблици

тук е plpgsql за нулиране на всички последователности (изпълнете в pgadmin или psql или друг клиент):

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;
$$
;

или използвайте всяко друго решение, предложено на Как да нулирам последователността от първични ключове на postgres, когато изпадне от синхронизиране?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Добавете поредния индикатор към дата в PostgreSQL

  2. Postgresql групиране по за множество редове

  3. psycopg2 как се справят с TypeError:не всички аргументи се преобразуват по време на форматиране на низ

  4. Как точно работи кръгла функция в postgresql?

  5. Схема на релационна база данни за източник на събития