DB2 переместить первичный ключ в другой столбец - PullRequest
2 голосов
/ 01 марта 2012

У меня есть таблица:

create table A (
    KEY VARCHAR(1024) not null
);

, где KEY - первичный ключ.Теперь я хочу создать еще один автоинкрементный столбец ID BIGINT, удалить существующее ограничение первичного ключа и сделать созданный столбец ID в качестве первичного ключа.

Как это сделать без потери моих данных?

Конечно, я могу использовать временную таблицу, но попробуйте найти правильный путь.

Ответы [ 2 ]

3 голосов
/ 01 марта 2012
ALTER TABLE A DROP PRIMARY KEY;

ALTER TABLE A ADD COLUMN ID BIGINT NOT NULL WITH DEFAULT 0;

ALTER TABLE A ALTER COLUMN ID SET GENERATED ALWAYS AS IDENTITY(START WITH 1, INCREMENT BY 1);

REORG TABLE A;

UPDATE TABLE A SET ID = DEFAULT;

ALTER TABLE A ADD PRIMARY KEY (ID);
1 голос
/ 24 декабря 2013

Я попробовал вариант на http://www.channeldb2.com/profiles/blogs/how-to-add-identity-column-to, и он работал

...