Изменить столбец, если существует - PullRequest
0 голосов
/ 10 июня 2018

Очевидно, MariaDB поддерживает IF EXISTS в сочетании с CHANGE для `ALTER TABLE запросов (https://mariadb.com/kb/en/library/alter-table/), однако подробная документация не подразумевает этого. Вот пара примеров запросов длятестовая таблица:

ALTER TABLE `test` CHANGE COLUMN `col2` `col2` INT(1) NOT NULL AFTER `col1`;

ALTER TABLE `test` CHANGE COLUMN `col2` `col2` INT(2) NOT NULL AFTER `col1`;

Однако, когда я добавляю IF EXISTS MariaDB выдает синтаксическую ошибку:

ALTER TABLE `test` CHANGE COLUMN `col2` IF EXISTS `col2` INT(1) NOT NULL AFTER `col1`;

Да, очевидно, это не является частью стандарта SQL (и в моемСценарий Мне не нужно беспокоиться об этом или о совместимости с MySQL.) Однако я заинтересован в более явном да или нет в поддержке IF EXISTS конкретно в сочетании с CHANGE и если так, как будет выглядеть правильный синтаксис? Локально я использую MariaDB 10.2.6.

1 Ответ

0 голосов
/ 10 июня 2018

Неверно

ALTER TABLE `test` CHANGE COLUMN `col2` IF EXISTS `col2` INT(1) NOT NULL AFTER `col1`;

Неверно

ALTER TABLE `test` CHANGE COLUMN `col2` `col2` IF EXISTS INT(1) NOT NULL AFTER `col1`;

Правильно

ALTER TABLE `test` CHANGE COLUMN IF EXISTS `col2` `col2` INT(1) NOT NULL AFTER `col1`;

IF EXISTS должен немедленно следовать за CHANGE COLUMN.

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