sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL skaffa och släpp LOCK inuti lagrad funktion

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:

Eller så omvärderar du ditt problem och delar upp det i ett par separata transaktioner.



  1. Hur man löser ORA-29913 med externa tabeller

  2. Hur använder man regex i MySQL?

  3. Beräkning av procentandel av gruppantalet (*)

  4. Hur man infogar Excel- eller CSV-data i tabell med hjälp av grafiskt användargränssnitt i SQL Server - SQL Server / TSQL självstudie del 102