O PostgreSQL tem uma OR REPLACE
variante " " (como em " CREATE OR REPLACE ____
") para tabelas, funções, visualizações, regras, etc. No entanto, ele não tem uma para tipos.
Eu poderia ir registrar um bug, mas imagino que essa foi uma decisão deliberada dos mantenedores. Minha pergunta é: por quê?
Em outras palavras, o que há de diferente nos tipos que os faz não precisar de um OR REPLACE
(mesmo que tabelas, funções, etc. precisem)?
PS Acabei de descobrir que ele tem um DROP TYPE IF EXISTS
... o que só me confunde mais. Realmente parece que CREATE TYPE
foi escolhido para não ter um IF EXISTS
, e eu simplesmente não vejo o porquê.