sql >> Base de Datos >  >> RDS >> PostgreSQL

tupla actualizada simultáneamente al crear funciones en postgresql/PL/pgSQL

Como se describe aquí , postgres actualmente no le permite usar CREATE FUNCTION al mismo tiempo:

Una solución a esto es asegurarse de que ninguna transacción intente hacer CREATE FUNCTION al mismo tiempo.

Puede utilizar posgres bloqueos de aviso por eso.

Puede encontrar una buena introducción a los bloqueos de aviso aquí:https://vladmihalcea .com/how-do-postgresql-advisory-locks-work/

Por ejemplo, puede utilizar:

BEGIN; -- start of transaction

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

CREATE OR REPLACE FUNCTION myfunction ...

COMMIT;

Esto requiere un bloqueo de aviso exclusivo a nivel de transacción, de modo que no se puedan ejecutar dos transacciones simultáneas para crear la función al mismo tiempo. Al final de la transacción, el bloqueo se libera automáticamente.