Files
tracksteel_app/supabase/migrations/20250729103005-1a680c92-a76c-412d-a0c7-851651fa0561.sql

37 lines
1.5 KiB
PL/PgSQL

-- Adicionar coluna de versão/revisão na tabela prioridades_fabricacao
ALTER TABLE public.prioridades_fabricacao
ADD COLUMN revisao integer DEFAULT 0,
ADD COLUMN data_ultima_modificacao timestamp with time zone DEFAULT now(),
ADD COLUMN modificado_por uuid REFERENCES auth.users(id);
-- Criar índice para otimizar consultas por OF, fase e revisão
CREATE INDEX idx_prioridades_fabricacao_of_fase_revisao
ON public.prioridades_fabricacao (of_number, etapa_fase, revisao);
-- Função para incrementar revisão automaticamente quando houver mudanças
CREATE OR REPLACE FUNCTION public.increment_prioridade_fabricacao_revision()
RETURNS TRIGGER AS $$
BEGIN
-- Verifica se houve alteração nos itens de prioridade
IF TG_OP = 'INSERT' OR TG_OP = 'UPDATE' OR TG_OP = 'DELETE' THEN
-- Atualizar a revisão da prioridade_fabricacao correspondente
UPDATE public.prioridades_fabricacao
SET
revisao = COALESCE(revisao, 0) + 1,
data_ultima_modificacao = now(),
modificado_por = auth.uid()
WHERE id = COALESCE(NEW.prioridade_fabricacao_id, OLD.prioridade_fabricacao_id);
END IF;
RETURN COALESCE(NEW, OLD);
END;
$$ LANGUAGE plpgsql;
-- Trigger para incrementar revisão automaticamente
CREATE TRIGGER trigger_increment_prioridade_fabricacao_revision
AFTER INSERT OR UPDATE OR DELETE
ON public.itens_prioridade_fabricacao
FOR EACH ROW
EXECUTE FUNCTION public.increment_prioridade_fabricacao_revision();