PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

tuple mis à jour simultanément lors de la création de fonctions dans postgresql / PL/pgSQL

Comme décrit ici , postgres ne vous permet pas actuellement d'utiliser CREATE FUNCTION simultanément :

Une solution à cela est de s'assurer qu'aucune transaction n'essaye de faire la CREATE FUNCTION en même temps.

Vous pouvez utiliser posgres verrous consultatifs pour ça.

Une bonne introduction aux verrous consultatifs peut être trouvée ici :https://vladmihalcea .com/how-do-postgresql-advisory-locks-work/

Par exemple, vous pouvez utiliser :

BEGIN; -- start of transaction

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

CREATE OR REPLACE FUNCTION myfunction ...

COMMIT;

Cela prend un verrou consultatif exclusif au niveau de la transaction, de sorte qu'aucune transaction simultanée ne peut exécuter créer la fonction en même temps. A la fin de la transaction, le verrou est automatiquement levé.