PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL получава и освобождава LOCK вътре в съхранената функция

В Postgres 11 или по-късно, помислете за PROCEDURE което позволява контрол на транзакциите. Вижте:

Сфункциите , няма кака . Функциите в Postgres са атомарни (винаги вътре в транзакция) и заключванията се освобождават в края на транзакция.

Може да успеете да заобиколите това с консултации бравите . Но това не са едно и също нещо. Всички конкуриращи се транзакции трябва да играят заедно. Едновременният достъп, който не е запознат с уведомителните заключвания, ще развали купона.

Примерен код на dba.SE:

Или може да стигнете някъде с "измамни" автономни транзакции с dblink:

Или преоценявате проблема си и го разделяте на няколко отделни транзакции.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на последователност, чиито стойности са комбинация от знаци и числа

  2. PostgreSQL JOIN с тип масив с ред на елементите на масива, как да се приложи?

  3. Postgresql COPY CSV ERROR:допълнителни данни след последната очаквана колона

  4. Node е 20 пъти по-бърз от .NET Core при свързване към Postgres

  5. Postgresql -- почистване на HTML тагове в средата на низа