在DB2 LUW上更改数据类型和默认值10.5
我正在尝试在同一个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
你不能改变同一列两次在同一个语句 - 这就是SQLCODE -612告诉你的。按照http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.messages.sql.doc/doc/msql00612n.html
列名只能在单个ALTER TABLE语句中的一个ADD,DROP COLUMN或ALTER COLUMN子句中引用。
其他尝试在语法上不正确。
alter table tbl
alter COLUMN col set DATA TYPE VARCHAR(128)
ALTER column B SET DEFAULT current user;
您在查询中发生了什么变化以及为什么它可以解决问题? – JJJ
您不能在同一个语句中两次更改同一列 - 这正是SQLCODE -612告诉您的。您的其他尝试在语法上不正确。 – mustaccio
按照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
@GeekyDaddy似乎回答了这个问题;为什么不把它列为答案? –