PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgres:zaktualizuj sekwencję klawiszy podstawowych dla wszystkich tabel

tutaj jest plpgsql do resetowania wszystkich sekwencji (uruchom w pgadmin, psql lub dowolnym innym kliencie):

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

lub skorzystaj z innego rozwiązania proponowanego na Jak zresetować sekwencję klawiszy podstawowych Postgresa, gdy nie jest zsynchronizowany?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego postgresql nie używa indeksu w tym zapytaniu

  2. Nie znaleziono modułu podczas importowania pakietu Pythona w ramach procedury plpython3u

  3. Wyceniony w tabeli odpowiednik parametru w Postgresql

  4. Wiele-do-wielu w sqlalchemii. Zapobieganie wstawianiu SQLAlchemy do tabeli, jeśli tag już istnieje

  5. BŁĄD:zduplikowana wartość klucza narusza ograniczenie unikalności w postgreSQL