代码之家  ›  专栏  ›  技术社区  ›  John

更改列(如果存在)

  •  0
  • John  · 技术社区  · 7 年前

    显然Mariadb支持 IF EXISTS CHANGE 用于“更改表查询”( 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`;
    

    但是当我加上 如果存在 Mariadb抛出一个Sytax错误:

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

    是的,显然这不是sql标准的一部分(在我的场景中,我不必担心这个问题或与mysql的兼容性)。然而我 对更明确的“是”或“否”的支持感兴趣 如果存在 特别是与 变化 如果 那么正确的语法是什么样子的呢?在当地我用的是Mariadb 10.2.6。

    1 回复  |  直到 7 年前
        1
  •  0
  •   John    7 年前

    错误的

    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 .