I Postgres 11 eller senare, överväg en PROCEDURE
som möjliggör transaktionskontroll. Se:
Med funktioner , det finns ingen möjlighet . Funktioner i Postgres är atomära (alltid inuti en transaktion) och lås frigörs i slutet av en transaktion.
Du kanske kan komma runt detta med rådgivning lås . Men det är inte samma sak. Alla konkurrerande transaktioner måste spela med. Samtidig åtkomst som inte är medveten om rådgivande lås kommer att förstöra festen.
Kodexempel på dba.SE:
Eller så kanske du kommer någonstans med att "fuska" autonoma transaktioner med dblink:
- Hur gör jag stora icke-blockerande uppdateringar i PostgreSQL?
- Har Postgres stöd för kapslade eller autonoma transaktioner?
Eller så omvärderar du ditt problem och delar upp det i ett par separata transaktioner.