PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

krotka jednocześnie aktualizowana podczas tworzenia funkcji w postgresql / PL/pgSQL

Jak opisano tutaj , postgres nie pozwala obecnie na użycie funkcji CREATE FUNCTION jednocześnie:

Rozwiązaniem tego problemu jest upewnienie się, że żadne dwie transakcje nie próbują wykonać CREATE FUNCTION w tym samym czasie.

Możesz użyć posgres blokad doradczych za to.

Dobre wprowadzenie do blokad doradczych można znaleźć tutaj:https://vladmihalcea .com/how-do-postgresql-advisory-locks-work/

Na przykład możesz użyć:

BEGIN; -- start of transaction

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

CREATE OR REPLACE FUNCTION myfunction ...

COMMIT;

Wymaga to wyłącznej blokady doradczej na poziomie transakcji, tak aby żadne dwie współbieżne transakcje nie mogły jednocześnie utworzyć funkcji. Po zakończeniu transakcji blokada jest automatycznie zwalniana.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak połączyć się z localhost za pomocą postgres_fdw?

  2. Błąd podczas otwierania pgAdmin 4 na Macu

  3. WYBIERZ lub WSTAW wiersz w jednym poleceniu

  4. Spring:Jak używać KeyHolder z PostgreSQL

  5. Najlepsze narzędzia do tworzenia kopii zapasowych dla PostgreSQL