CREATE TABLE AS - как добавить столбец с ПК?


Мне нужно создать таблицу (встроенная база данных H2), используя поля из других таблиц. Я решил использовать оператор CREATE TABLE AS.

Мой код:
CREATE TABLE DOC AS
SELECT I.ID, I.STATUS, A.REMINDERINFORMATION
FROM IE802 I JOIN IE802_ATTRIBUTES A ON A.IE802_ID=I.ID;

Каждая строка, сгенерированная из приведенного выше кода, дополнительно должна иметь DOCID PrimaryKey. Как я могу добавить этот столбец и сделать его автоинкрементным и PK одновременно?

Спасибо за любые советы и другие решения!

В качестве альтернативы, как я могу сделать существующий I.ID PK?

Я все еще получаю сообщение об ошибке: Столбец «ID» не должен иметь значение NULL; Оператор SQL: ALTER TABLE DOC ADD PRIMARY KEY (ID) [90023-147]


person monczek    schedule 15.12.2010    source источник
comment
«ALTER TABLE DOC ALTER COLUMN ID BIGINT NOT NULL» решил мою ошибку.   -  person monczek    schedule 15.12.2010
comment
Если вы сами ответили на свой вопрос, опубликуйте ответ и отметьте его как принятый. Однако я не понимаю, как утверждение в вашем комментарии отвечает на эту часть вашего вопроса: как я могу добавить этот столбец и одновременно сделать его автоинкрементным и PK?   -  person Tony    schedule 15.12.2010
comment
Эта одна строка кода выше только избавилась от ошибки: идентификатор столбца не должен быть нулевым;   -  person monczek    schedule 15.12.2010


Ответы (1)


H2 поддерживает определения столбцов в CREATE AS SELECT:

CREATE TABLE DOC(
    ID INT PRIMARY KEY, 
    STATUS INT, 
    REMINDERINFORMATION VARCHAR(255)
) 
AS SELECT I.ID, I.STATUS, A.REMINDERINFORMATION
FROM IE802 I JOIN IE802_ATTRIBUTES A ON A.IE802_ID=I.ID;
person Thomas Mueller    schedule 15.12.2010
comment
Спасибо! Это именно то, что мне нужно :) - person monczek; 15.12.2010