如果存在则更改列

时间:2018-06-10 17:22:56

标签: mariadb

显然MariaDB支持Thread thread = new Thread(new ThreadStart(//Your method name here)); thread.start(); IF EXISTS一起使用`ALTER TABLE查询(https://mariadb.com/kb/en/library/alter-table/),但详细的文档并不意味着这一点。  以下是测试表的几个示例查询:

CHANGE

但是当我添加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错误:

IF EXISTS

是的,显然这不是SQL标准的一部分(在我的场景中,我不必关心它或与MySQL的兼容性)。但是我对支持ALTER TABLE `test` CHANGE COLUMN `col2` IF EXISTS `col2` INT(1) NOT NULL AFTER `col1`; 更明确的是或否感兴趣,特别是与IF EXISTS if 一起使用,那么正确的语法如何看?我在本地使用MariaDB 10.2.6。

1 个答案:

答案 0 :(得分:0)

<强>不正确

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