【问题标题】:Altering data type and default on DB2 LUW 10.5在 DB2 LUW 10.5 上更改数据类型和默认值
【发布时间】:2015-04-07 10:51:15
【问题描述】:

我试图在同一个 alter 命令中对 DB2 中的一列进行 2 次更改,但它似乎不喜欢我的语法。有没有办法做到这一点?如果有,怎么做?

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

在下面发现了一个意外的标记“set data type varchar(128)” “TBL 更改列 col”。预期的标记可能包括:“”.. 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 集”。预期的标记可能包括:“”.. 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, 驱动程序=3.67.28

【问题讨论】:

  • 您不能在同一语句中两次更改同一列——这就是 SQLCODE -612 告诉您的。您的其他尝试在语法上不正确。
  • 根据www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/…,列名只能在单个 ALTER TABLE 语句中的一个 ADD、DROP COLUMN 或 ALTER COLUMN 子句中引用。
  • @GeekyDaddy 似乎回答了这个问题;为什么不将其列为答案?
  • 我只是再次强调@mustaccio 的响应并提供链接

标签: alter-table db2-luw


【解决方案1】:

您不能在同一语句中两次更改同一列——这就是 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 子句中引用。

其他尝试在语法上不正确。

【讨论】:

    【解决方案2】:
    alter table tbl 
    alter COLUMN col set DATA TYPE VARCHAR(128)
    ALTER column B SET DEFAULT current user;
    

    【讨论】:

    • 您在查询中做了哪些更改,为什么它可以解决问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2012-05-23
    • 1970-01-01
    相关资源
    最近更新 更多