Wie kann ich den 
zuletzt zugewiesenen Wert des Feldes "Auto-Increment" des seriellen Typs in die andere PostgreSQL-Datenbank übertragen, wenn die Tabelle Löschungen enthalten könnte und "nur noch max (pk)" nicht mehr funktioniert?
Es ist nur wenigen bekannt, dass PG zwar nicht über 
Funktionen der Version 10 verfügt 
, um den letzten Wert einer Sequenz für ein solches Feld 
aus einer anderen Sitzung herauszufinden , dies jedoch dennoch möglich ist.

PostgreSQL unterstützt "Auto-Inkrement" -Felder, die durch den 
seriellen Pseudotyp definiert sind :
Die Datentypen "smallserial", "serial" und "bigserial" sind keine reellen Typen, sondern lediglich ein praktisches Tool zum Erstellen von Spalten mit eindeutigen Bezeichnern (ähnlich der AUTO_INCREMENT-Eigenschaft in einigen DBMS).
Technisch gesehen ist dies nur eine automatische Verknüpfung der DEFAULT-Definition für das Feld und der vom 
SEQUENCE- Objekt generierten Werte. Und manchmal möchte ich diese Werte untersuchen - zum Beispiel, 
um sie in eine Datenbank mit ähnlicher Struktur zu übertragen .
Dies ist jedoch nicht einfach:
currval
Gibt den Wert zurück, der vom letzten nextval-Aufruf für diese Sequenz in der aktuellen Sitzung zurückgegeben wurde. (Wenn nextval in einer bestimmten Sitzung noch nie für eine bestimmte Sequenz aufgerufen wurde, wird ein Fehler zurückgegeben.) Da dieser Wert durch den Umfang der Sitzung begrenzt ist, liefert diese Funktion ein vorhersagbares Ergebnis, unabhängig davon, ob nextval später in anderen Sitzungen aufgerufen wurde oder nicht.
Pg_sequences-SystemansichtAb PostgreSQL 10 erschien die 
Systemansicht pg_sequences , in der diese Informationen bereits ohne großen Aufwand sichtbar sind.
 Versuchen wir doch diese Informationen herauszuholen:
CREATE TABLE tst( id serial  
 TABLE tst; 
 id | val -------- 1 | 1 2 | 2 3 | 4 4 | 8 
Dies ist der Wert 
id = 4 , den wir erhalten möchten. Aber jemand hat einen Teil der Datensätze gelöscht, und in der Tabelle ist es nicht mehr:
 DELETE FROM tst WHERE id > 2; 
 id | val -------- 1 | 1 2 | 2 
Zuerst ermitteln wir den Namen der Sequenz, die unserem Feld entspricht:
 SELECT pg_get_serial_sequence('tst', 'id'); 
 pg_get_serial_sequence ---------------------- public.tst_id_seq 
Verwenden Sie nun den resultierenden 
Sequenznamen als Tabelle in der Abfrage:
 SELECT * FROM public.tst_id_seq; 
 last_value | log_cnt | is_called -------------------------------- 4 | 29 | t 
Tatsächlich speichert das 
last_value- Feld auch den allerletzten Wert, den die Sequenz zum Zeitpunkt unseres Aufrufs generiert hat.
Erstellen wir nun ein einfaches Skript zum Übertragen von Sequenzwerten von einer Datenbank in eine andere mit 
dem Modul dblink :
  
Denken Sie jedoch daran, dass das Ergebnis undefiniert ist, wenn eine Aktivität in der Quellbasis vorhanden ist!