2015-04-07 137 views
1

我正在嘗試在同一個alter命令中對DB2中的列進行2個更改,並且它似乎不喜歡我的語法。有沒有辦法做到這一點?如果是這樣,怎麼樣?在DB2 LUW上更改數據類型和默認值10.5

create table tbl(col varchar(10)) 

以下作品,使用2- ALTER語句:

alter table tbl 
alter column col set data type varchar(128) 

alter table tbl 
alter column col set default current user 

以下嘗試失敗:

alter table tbl 
alter column col set data type varchar(128) set default current user 

意外的標記 「設置數據類型爲varchar(128)」 被找到以下 「TBL改欄列」。預期標記可能包括: 「」 .. SQLCODE = -104,SQLSTATE = 42601,DRIVER = 3.67.28

alter table tbl 
alter column col set data type varchar(128) with default current user 

意外的標記 「的數據類型爲varchar(128)」 之後發現 「改變列col set」。預期標記可能包括: 「」 .. SQLCODE = -104,SQLSTATE = 42601,DRIVER = 3.67.28

alter table tbl 
alter column col set data type varchar(128) 
alter column col set default current user 

「COL」 是重複的名稱.. SQLCODE = -612,SQLSTATE = 42711, DRIVER = 3.67.28

+0

您不能在同一個語句中兩次更改同一列 - 這正是SQLCODE -612告訴您的。您的其他嘗試在語法上不正確。 – mustaccio

+1

按照http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.messages.sql.doc/doc/msql00612n.html只能在列名中引用列名一個ADD,DROP COLUMN或ALTER COLUMN子句在一個ALTER TABLE語句中。 – GeekyDaddy

+0

@GeekyDaddy似乎回答了這個問題;爲什麼不把它列爲答案? –

回答

0
alter table tbl 
alter COLUMN col set DATA TYPE VARCHAR(128) 
ALTER column B SET DEFAULT current user; 
+1

您在查詢中發生了什麼變化以及爲什麼它可以解決問題? – JJJ