PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Currval wurde in dieser Sitzung noch nicht definiert, wie bekomme ich Multi-Session-Sequenzen?

Der currval gibt den letzten Wert zurück, der für die Sequenz innerhalb der aktuellen Sitzung generiert wurde. Wenn also eine andere Sitzung einen neuen Wert für die Sequenz generiert, können Sie immer noch den letzten von IHRER Sitzung generierten Wert abrufen und Fehler vermeiden.

Aber um den zuletzt generierten Wert für alle Sitzungen zu erhalten, können Sie das oben genannte verwenden:

SELECT last_value FROM your_sequence_name;

Seien Sie vorsichtig, wenn der Wert von einer anderen Sitzung mit einer nicht festgeschriebenen (oder abgebrochenen) Transaktion verwendet wurde und Sie diesen Wert als Referenz verwenden, erhalten Sie möglicherweise eine Fehlermeldung. Auch nach Erhalt dieses Wertes kann es bereits veraltet sein. Im Allgemeinen brauchen die Leute nur den currval oder sogar die Rückgabe von setval .