Mariadb 更改列(如果存在)
显然,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`; 但是,当我添
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)
,但没有使用它。