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,