Som beskrevet her
, tillader postgres dig ikke i øjeblikket at bruge CREATE FUNCTION
samtidig:
En løsning på dette er at sikre, at ikke to transaktioner forsøger at udføre CREATE FUNCTION
på samme tid.
Du kan bruge posgres rådgivende låse for det.
En god introduktion til rådgivende låse kan findes her:https://vladmihalcea .com/how-do-postgresql-advisory-locks-work/
Du kan f.eks. bruge:
BEGIN; -- start of transaction
SELECT pg_advisory_xact_lock(2142616474639426746); -- random 64-bit signed ('bigint') lock number
CREATE OR REPLACE FUNCTION myfunction ...
COMMIT;
Dette kræver en eksklusiv rådgivningslås på transaktionsniveau, så der ikke kan køres to samtidige transaktioner, og opret funktionen på samme tid. Ved slutningen af transaktionen frigives låsen automatisk.