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

кортеж, актуализиран едновременно при създаване на функции в postgresql / PL/pgSQL

Както е описано тук , postgres в момента не ви позволява да използвате CREATE FUNCTION едновременно:

Решение за това е да се гарантира, че нито една транзакция не се опитва да изпълни CREATE FUNCTION по едно и също време.

Можете да използвате консултативни ключалки на posgres за това.

Добро въведение в съветващите заключвания можете да намерите тук:https://vladmihalcea .com/how-do-postgresql-advisory-locks-work/

Например можете да използвате:

BEGIN; -- start of transaction

SELECT pg_advisory_xact_lock(2142616474639426746); -- random 64-bit signed ('bigint') lock number

CREATE OR REPLACE FUNCTION myfunction ...

COMMIT;

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. postgresql:INSERT INTO ... (ИЗБЕРЕТЕ * ...)

  2. PostgreSQL:как да конвертирам от епоха на Unix към днешна дата?

  3. Rails / Postgres:„трябва да се появи в клаузата GROUP BY или да се използва в агрегатна функция“

  4. PostgreSQL:Проверка за НОВО и СТАРО във функция за тригер

  5. plpgsql функция:Връща редове от изглед, създаден от произволна таблица