From ec0b7c16117ac3ee9eb005126978e18b8ee23f26 Mon Sep 17 00:00:00 2001 From: julian Date: Wed, 24 Jun 2026 16:52:10 +0000 Subject: [PATCH] fix(triggers): advisory lock e fconta corretos em fn_sync_pedido_aprovado_to_erp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - FOR UPDATE é inválido com MAX() no PG 18; substituído por pg_advisory_xact_lock - fconta=0 violava CHECK (1,2,3,4,5,6,9); corrigido para 1 (padrão SAR) Co-Authored-By: Claude Sonnet 4.6 --- scripts/sar-triggers.sql | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/sar-triggers.sql b/scripts/sar-triggers.sql index dc77c40..b9d25ba 100644 --- a/scripts/sar-triggers.sql +++ b/scripts/sar-triggers.sql @@ -52,12 +52,14 @@ BEGIN RETURN NEW; END IF; - -- Próximo número disponível para a empresa (com lock) + -- Lock por empresa para serializar geração do número (FOR UPDATE não + -- é permitido com funções de agregação no PG 18) + PERFORM pg_advisory_xact_lock(NEW.id_empresa::bigint); + SELECT COALESCE(MAX(numero), 0) + 1 INTO v_numero FROM sig.pedidos - WHERE id_empresa = NEW.id_empresa - FOR UPDATE; + WHERE id_empresa = NEW.id_empresa; -- Código da pauta (sig usa codigo, SAR armazena id_pauta) SELECT codigo INTO v_cod_pauta @@ -171,7 +173,7 @@ BEGIN COALESCE(NEW.acrescimo, 0), NEW.num_ped_sar, 1, -- inf_usuario=1: criado pelo SAR - 0, + 1, -- fconta: CHECK (1,2,3,4,5,6,9) — 1=padrão 0, 0, 0,