Eu sei que você está procurando uma resposta mysql. No entanto, o mysql é usado principalmente dentro de outras linguagens de programação e enviado ao servidor por elas. Muitas linguagens têm mecanismos para detectar erros de tempo de execução e reagir de acordo. Então você pode simplesmente enviar o comando para o banco de dados e pegar o erro. O que permitiria que seu programa continuasse em execução e certificando-se de que a coluna existe. Exemplo em php:
try {
$DB->query("ALTER TABLE myTable ADD `example_Col` int NOT NULL");
}catch(Exception $e)
{
echo "\nWarning example_Col already exists\n";
}
Isso supondo que $DB é um objeto que permite enviar uma consulta, é claro.
Na verdade existe agora para Maria DB 10.219
Bônus, também funciona para MODIFY
MySQL
ALTER TABLE
não temIF EXISTS
especificação.Você pode fazer o seguinte usando um proc armazenado ou uma linguagem de programação se isso for algo que você precisará fazer regularmente:
Pseudo-código:
Descubra se a coluna existe usando o SQL abaixo:
SELECIONE
column_name
DEINFORMATION_SCHEMA
.COLUMNS
WHERETABLE_SCHEMA
=[Nome do banco de dados] ANDTABLE_NAME
=[Nome da tabela];Se a consulta acima retornar um resultado, significa que a coluna existe, caso contrário, você pode prosseguir e criar a coluna.
Você pode usar esta solução, já mencionada em outro post do StackOverFlow: (Ref.: https://stackoverflow.com/a/31989541/ )
MySQL - ALTER TABLE para adicionar uma coluna se ela não existir:
Isso abaixo funcionou para mim:
Eu sei que você está procurando uma resposta mysql. No entanto, o mysql é usado principalmente dentro de outras linguagens de programação e enviado ao servidor por elas. Muitas linguagens têm mecanismos para detectar erros de tempo de execução e reagir de acordo. Então você pode simplesmente enviar o comando para o banco de dados e pegar o erro. O que permitiria que seu programa continuasse em execução e certificando-se de que a coluna existe. Exemplo em php:
Isso supondo que $DB é um objeto que permite enviar uma consulta, é claro.