Добавить столбец, если не существует - PullRequest
1 голос
/ 27 апреля 2011

Как я могу добавить столбец, если он не существует.Я пробовал этот код:

IF EXISTS( SELECT NULL
            FROM INFORMATION_SCHEMA.COLUMNS
           WHERE table_name = 'forwind.measuringdata_fino_10_00000000'
             AND table_schema = 'forwind'
             AND column_name != 'F1_USA(40)_u')  THEN

  ALTER TABLE `forwind.measuringdata_fino_10_00000000` ADD `F1_USA(40)_u` FLOAT NOT NULL default '0';

END IF; 

, но я получаю следующую ошибку:

Код ошибки: 1064 У вас есть ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который следует использовать рядом с «ЕСЛИ СУЩЕСТВУЕТ» (ВЫБЕРИТЕ NULL ИЗ INFORMATION_SCHEMA.COLUMNS

Хорошо, если кто-то знает другое решение!

1 Ответ

7 голосов
/ 27 апреля 2011

MySQL не поддерживает подобные анонимные операторы IF.

У вас есть как минимум 3 варианта решения этой проблемы:

1) Просто запустите оператор ALTER TABLE и проигнорируйте ошибку Duplicate column name, если столбец уже существует. Если вы выполняете связку DDL в сценарии, вы можете использовать mysql -f, чтобы игнорировать ошибки и продолжать работу. 2) Используйте язык сценариев, такой как bash, python, perl и т. Д., Чтобы проверить наличие столбца, а затем добавьте его, если он еще не существует. 3) Создайте хранимую процедуру в MySQL, чтобы проверить наличие столбца, а затем добавьте его, если он еще не существует.

P.S. Кроме того, я рекомендую не ставить скобки в именах столбцов, потому что это заставляет вас указывать имя столбца каждый раз, когда вы ссылаетесь на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...