![](/img/trans.png)
[英]How I can use the result of SELECT statement in ALTER TABLE in MySQL?
[英]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.