sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL verkrijgt en laat LOCK in de opgeslagen functie los

In Postgres 11 of later, overweeg een PROCEDURE die transactiecontrole mogelijk maakt. Zie:

Met functies , er is geen manier . Functies in Postgres zijn atomair (altijd binnen een transactie) en vergrendelingen worden vrijgegeven aan het einde van een transactie.

U kunt dit wellicht omzeilen met adviserend sloten . Maar dat zijn niet hetzelfde. Alle concurrerende transacties moeten meespelen. Gelijktijdige toegang die niet op de hoogte is van adviesvergrendelingen zal het feest bederven.

Codevoorbeeld op dba.SE:

Of misschien kom je ergens met "vals spelen" van autonome transacties met dblink:

Of u beoordeelt uw probleem opnieuw en splitst het op in een aantal afzonderlijke transacties.



  1. SQL Server-equivalent van MySQL's USING

  2. Hoe sla je een MySQL-queryresultaat op in een variabele in c

  3. Een overzicht van VACUUMM-verwerking in PostgreSQL

  4. Java + Mysql UTF8-probleem