![](/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.