繁体   English   中英

如何在MySQL中将IF语句和ALTER语句一起使用?

[英]How do I use an IF statement with an ALTER statement in MySQL?

我希望仅在以前不存在的情况下添加该列。 这样做的动机是我们可以将生产实例的任何版本升级到最新版本。

这是我正在尝试的方法,但是在IF语句附近不断出现语法错误:

use database_name

SELECT @rowcount:=COUNT(column_name)
FROM information_schema.columns
WHERE table_name = 'table_name'
AND column_name = 'column_2';

IF @rowcount < 1 THEN
 ALTER TABLE table_name
  ADD COLUMN  column_2  VARCHAR(42)  DEFAULT  'abcd',
END IF;

commit;

我究竟做错了什么?

您询问:

如何在MySQL中将IF语句和ALTER语句一起使用?

您不能那样做™。 MySQL的DML和DDL与其他品牌和型号的表服务器的集成度不高。

您不能将DML放入IF语句或事务之类的内容中。 如果需要执行此类操作,则必须使用应用程序编程语言来发布更简单的SQL。

我认为你应该改变

IF @rowcount < 0 THEN ALTER TABLE table_name ADD COLUMN column_2 VARCHAR(42) DEFAULT 'abcd', END IF; 并检查表是否存在。

正如@Ollie Jones提到的那样,从在MySQL SELECT查询使用IF语句开始 ,似乎无法在存储过程或函数之外使用if语句。

我按照http://www.cryer.co.uk/brian/mysql/howto_add_column_unless_exists.htm上的步骤进行操作:

  • 创建存储过程(请参阅链接)
  • 想要向表中添加新列时调用存储过程

另外,就像@Ollie Jones提到的那样,您可以在应用程序级别执行此操作,但是我使用的是.sql文件。 与在服务器级别完成多次调用相比,它还节省了对数据库的多次调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM