1
resposta

04 Atualizando dados de uma função

A letra B é a única que elimina a função antiga corretamente então depois cria uma nova com os parâmetros atualizados já se pode imaginar que a B seja a certa.

1 resposta

Olá, Fábio! Tudo bem?

Exatamente! Você pegou o ponto central da manutenção de objetos no MySQL.

Diferente de tabelas, onde usamos o ALTER TABLE para mudar a estrutura sem apagar os dados, para Stored Functions e Procedures, o comando ALTER é muito limitado (serve basicamente para mudar características como segurança ou comentários).

Por que a letra B é a correta?

Como o MySQL não permite alterar o corpo (a lógica) ou os parâmetros de uma função já existente através de um comando "update", o fluxo padrão de trabalho é exatamente este:

  1. DROP FUNCTION IF EXISTS nome_da_função;: Você limpa o terreno, removendo a versão obsoleta para evitar conflitos de nomes.
  2. CREATE FUNCTION ...: Você reconstrói a função do zero com as novas regras de negócio ou parâmetros necessários.

Dica de Produtividade

Se você estiver usando o MySQL Workbench, uma forma prática de fazer isso visualmente é:

  • Clicar com o botão direito sobre a função na aba Schemas;
  • Selecionar Alter Function....

O Workbench vai gerar automaticamente um script que faz o DROP e o CREATE para você em uma aba temporária, permitindo que você edite a lógica e aplique as mudanças com segurança.

Sua percepção foi certeira! Dominar esse ciclo de "apagar e recriar" é fundamental para manter o banco de dados atualizado conforme as regras de negócio mudam.

Espero que possa ter lhe ajudado! Você já tentou usar o comando OR REPLACE (comum em outros bancos como PostgreSQL ou Oracle) e sentiu falta dele aqui no MySQL?