2015-04-07 94 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