sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL opnå og frigive LOCK inde i lagret funktion

I Postgres 11 eller senere, overvej en PROCEDURE som tillader transaktionskontrol. Se:

Med funktioner , der er ingen måde . Funktioner i Postgres er atomare (altid inde i en transaktion), og låse frigives i slutningen af ​​en transaktion.

Du kan muligvis omgå dette med rådgivning låse . Men det er ikke det samme. Alle konkurrerende transaktioner skal spille med. Samtidig adgang, der ikke er opmærksom på rådgivende låse, vil ødelægge festen.

Kodeeksempel på dba.SE:

Eller du kan komme et sted med at "snyde" autonome transaktioner med dblink:

Eller du revurderer dit problem og deler det op i et par separate transaktioner.



  1. Vis MySQL-vært via SQL-kommando

  2. Mysql rækkefølge ved at bruge to kolonner

  3. ROLLBACK TRUNCATE i SQL Server

  4. Oracle forbindelse/forespørgsel timeout