Casos avançados

Como converter sintaxe MERGE entre SQL Server e PostgreSQL com segurança

MERGE e upsert exigem validação cirúrgica. Compare MERGE (T-SQL) com INSERT ... ON CONFLICT DO UPDATE (PostgreSQL).

MERGE é uma das estruturas mais perigosas de converter manualmente: condições de corrida, duplicatas e triggers podem corromper dados. No PostgreSQL o padrão idiomático é INSERT ... ON CONFLICT DO UPDATE (upsert).

Paralelo conceitual

SQL Server — MERGE

MERGE destino AS d
USING origem AS o ON d.id = o.id
WHEN MATCHED THEN UPDATE SET valor = o.valor
WHEN NOT MATCHED THEN INSERT (id, valor) VALUES (o.id, o.valor);

PostgreSQL — ON CONFLICT

INSERT INTO destino (id, valor)
SELECT id, valor FROM origem
ON CONFLICT (id) DO UPDATE SET valor = EXCLUDED.valor;

Checklist antes de produção

Confirme índice UNIQUE ou PRIMARY KEY na coluna de conflito.

Valide se WHEN NOT MATCHED vira INSERT sem duplicar em corrida.

Teste com volume real — MERGE mal convertido costuma passar em dev e falhar sob carga.

Analisador de Impacto

Queries de MERGE exigem validação cirúrgica. Rode nosso diagnóstico gratuito para garantir que sua lógica não corrompa os dados destino.

Abrir Análise de Projeto →