Files
App-Estoque-LiberiKids/scripts/limpar_duplicados_configuracoes.sql
2025-11-29 21:31:52 -03:00

44 lines
1.2 KiB
SQL

-- Limpar registros duplicados na tabela configuracoes antes de adicionar constraint UNIQUE
-- 1. Ver quais registros estão duplicados
SELECT tipo, COUNT(*) as total
FROM public.configuracoes
GROUP BY tipo
HAVING COUNT(*) > 1;
-- 2. Remover duplicados, mantendo apenas o mais recente de cada tipo
DELETE FROM public.configuracoes
WHERE id IN (
SELECT id
FROM (
SELECT id, tipo,
ROW_NUMBER() OVER (PARTITION BY tipo ORDER BY updated_at DESC, created_at DESC) as rn
FROM public.configuracoes
) t
WHERE rn > 1
);
-- 3. Verificar se ainda existem duplicados (deve retornar vazio)
SELECT tipo, COUNT(*) as total
FROM public.configuracoes
GROUP BY tipo
HAVING COUNT(*) > 1;
-- 4. Agora adicionar a constraint UNIQUE
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint
WHERE conname = 'configuracoes_tipo_key'
AND conrelid = 'public.configuracoes'::regclass
) THEN
ALTER TABLE public.configuracoes ADD CONSTRAINT configuracoes_tipo_key UNIQUE (tipo);
RAISE NOTICE 'Constraint UNIQUE adicionada com sucesso!';
ELSE
RAISE NOTICE 'Constraint UNIQUE já existe.';
END IF;
END $$;
-- 5. Verificar o resultado final
SELECT * FROM public.configuracoes ORDER BY tipo;