PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

tupla atualizada simultaneamente ao criar funções em postgresql/PL/pgSQL


Conforme descrito aqui , o postgres atualmente não permite que você use CREATE FUNCTION simultaneamente:

Uma solução para isso é garantir que não haja duas transações tentando fazer a CREATE FUNCTION ao mesmo tempo.

Você pode usar posgres bloqueios de aviso por isso.

Uma boa introdução aos bloqueios consultivos pode ser encontrada aqui:https://vladmihalcea .com/how-do-postgresql-advisory-locks-work/

Por exemplo, você pode usar:
BEGIN; -- start of transaction

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

CREATE OR REPLACE FUNCTION myfunction ...

COMMIT;

Isso requer um bloqueio consultivo exclusivo no nível da transação, para que duas transações simultâneas não possam ser executadas para criar a função ao mesmo tempo. Ao final da transação, o bloqueio é liberado automaticamente.