Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] CREATE OR REPLACE FUNCTION

Olá, o instrutor ensina usar o comando "CREATE OR REPLACE FUNCTION" para não ter a necessidade de usar o DROP FUNCTION quando quiser alterar a função, porém, quando rodo o comando dessa forma ao invés de substituir a função com os novos dados, o postgre está criando uma nova função com o mesmo nome. Primeiro eu criei a função para inserir dados em uma tabela chamada "aluno", só que o campo "data_nascimento" não pode ser nulo, então adicionei a variável aniversario na função como DATE. Alguém sabe me dizer o por que isso aconteceu? Veja o exemplo: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, Rodrigo, tudo bem?

O que está acontecendo no seu caso é que o PostgreSQL permite a sobrecarga de funções, ou seja, você pode ter múltiplas funções com o mesmo nome, desde que tenham assinaturas diferentes (diferentes tipos ou números de parâmetros).

No seu exemplo, ao adicionar o parâmetro aniversario do tipo DATE, você criou uma nova assinatura para a função inserir_dados. Por isso, o PostgreSQL não substituiu a função original, mas criou uma nova.

Para resolver isso, você precisa garantir que a assinatura da função que está tentando substituir seja exatamente a mesma. Se o seu objetivo é modificar a função existente, você deve usar DROP FUNCTION para remover a versão antiga antes de criar a nova, caso a assinatura tenha mudado.

Espero ter esclarecido.

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado