簡體   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