2016-09-28 2 views
5
ALTER TABLE user DROP COLUMN registered_date 

Мы можем удалить столбец, используя указанную выше команду. Но как я могу удалить его только в том случае, если существует столбец register_date?Как удалить столбец, если существует в mysql?

+0

Это не похоже, что есть способ, но в худшем случае вы получите сообщение об ошибке, которое вы могли бы обрабатывать в вашем приложении слоя. –

+0

будет выглядеть так: ALTER TABLE пользователь DROP COLUMN IF EXISTS registered_date; –

+0

@DeepakJoshi, я получу ошибку синтаксиса: «Неожиданный IF». – CloudSeph

ответ

-1
IF EXISTS(SELECT * 
      FROM information_schema.COLUMNS 
      WHERE 
      TABLE_SCHEMA = 'db_name' 
      AND TABLE_NAME = 'table_name' 
      AND COLUMN_NAME = 'column_name') 
BEGIN 
ALTER TABLE table_name DROP COLUMN column_name 
END 

ИЛИ

IF (SELECT COUNT(*) 
      FROM information_schema.COLUMNS 
      WHERE 
      TABLE_SCHEMA = 'db_name' 
      AND TABLE_NAME = 'table_name' 
      AND COLUMN_NAME = 'column_name'>0) 
BEGIN 
ALTER TABLE table_name DROP COLUMN column_name 
END 
+0

Я получаю синтаксическую ошибку 'if is not valid input in this position'. если я следую выше – CloudSeph

+0

@IvanCloud эти комманды команд доступны только в виде хранимой процедуры – Drew

+0

не работает недопустимый синтаксис рядом, если – Clintm

Смежные вопросы