Mariadb 更改列(如果存在)

Mariadb 更改列(如果存在),mariadb,Mariadb,显然,MariaDB支持将IF EXISTS与CHANGE结合使用,用于`ALTER TABLE queries(),但详细文档并未暗示这一点。 下面是测试表的两个示例查询: 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`; 但是,当我添

显然,MariaDB支持将
IF EXISTS
CHANGE
结合使用,用于`ALTER TABLE queries(),但详细文档并未暗示这一点。 下面是测试表的两个示例查询:

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抛出一个sytax错误:

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

是的,显然这不是SQL标准的一部分(在我的场景中,我不必担心这一点或与MySQL的兼容性)。但是,我感兴趣的是更明确的“是”或“否”,以支持
如果存在
,特别是与
更改
结合使用,如果存在,正确的语法会是什么样子?在本地,我使用的是MariaDB 10.2.6。

不正确

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`;

不正确

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`;
正确

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`;

如果存在
必须立即跟随
更改列

侧注:
(1)
(2)
没有任何意义;我希望你没有做出改变@RickJames不,谢谢你,我只是想避免使用水平滚动条,不要让另一个线程因为一些无聊的事情而完全脱轨。:-)那么使用
INT()
是有效的吗?简单的
INT
就足够了。它意味着一个4字节的有符号数,而不考虑参数<代码>显示创建表添加了
(11)
,但没有使用它。