2015-04-07 4 views
1

Я пытаюсь сделать 2 изменения в столбце в DB2 в той же команде alter, и это, похоже, не похоже на мой синтаксис. Есть ли способ сделать это? Если да, то как?Изменение типа данных и значения по умолчанию для DB2 LUW 10.5

create table tbl(col varchar(10)) 

следующие работы, используя 2 альтер высказывания:

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 alter column col". Ожидаемые маркеры могут включать в себя: "" .. SQLCODE = -104, SQLSTATE = 42601, ВОДИТЕЛЬ = 3.67.28

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

Неожиданный маркер "тип данных VARCHAR (128) был найден" после msgstr "изменить набор столбцов". Ожидаемые маркеры могут включать в себя: "" .. SQLCODE = -104, SQLSTATE = 42601, ВОДИТЕЛЬ = 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

Вы не можете изменить тот же столбец дважды в том же заявлении, - это то, что SQLCODE -612 говорит вам. Согласно 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.

Другие попытки являются синтаксически неправильными.

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

Что вы изменили в запросе и почему он решил проблему? – JJJ