Interesujące pytanie! Krótka odpowiedź: nie .
Długa odpowiedź: wydaje się, że nie istnieje żaden sposób na zdefiniowanie listy punktów zapisu. Co gorsza, nie wydaje się możliwe utworzenie rozszerzenia PostgreSQL, które pozwoliłoby ci to zrobić: patrząc na src / backend / access / transam / xact.c , możesz zobaczyć, że funkcje takie jak RollbackToSavepoint (gdzie nie ma takiego „takiego” savepoint "komunikat o błędzie, o którym wspomniałeś, pochodzi) opiera się na zmiennej CurrentTransactionState, która jest zadeklarowana jako statyczna dla xact.c, tzn. nie byłaby widoczna globalnie dla kodu rozszerzenia.
Teraz, jeśli odważyłeś się i dość desperacko wygenerowałeś listę zdefiniowanych punktów zapisu po stronie serwera (w przeciwieństwie do tego, żeby twój klient pamiętał ...), możesz dodać funkcję pomocniczą do xact.c, która wyświetlałaby to informacje dla ciebie. W rzeczywistości tutaj jest właśnie taka łatka . Jest to bardzo szorstka łatka wyłącznie w celach ilustracyjnych i po prostu wymienia nazwy punktów zapisu, naprawdę powinna zwracać te nazwy jako zbiór tekstu.
Jeśli chodzi o to, dlaczego brakuje tej funkcji, przypuszczam, że po prostu nie ma wiarygodnego przypadku użycia dla klienta, który musiałby pobrać listę zdefiniowanych punktów zapisu z serwera. Co zrobiłby klient z tą listą - wystarczy wybrać jedną losowo i ROLLBACK
do niej? ROLLBACK
do ostatniego na ślepo? Punkty zapisu AFAICT są użyteczne tylko wtedy, gdy klient pamięta zdefiniowane przez siebie punkty zapisu i gdzie były, aby móc z nich skorzystać.