2010-12-15 15 views
1


他のテーブルのフィールドを使用してテーブル(H2組み込みデータベース)を作成する必要があります。私はCREATE TABLE ASステートメントを使用することに決めました。CREATE TABLE AS - PKで列を追加する方法は?

マイコード:
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主キーを持たなければなりません。この列を追加して、同時に自動インクリメントとPKにする方法はありますか?

ヒントやその他のソリューションをありがとう!

また、既存のI.IDをPKにするにはどうすればよいですか?

私はまだエラーが発生しています:列 "ID"はnull可能であってはなりません。 SQL文: ALTER TABLE DOCは、PRIMARY KEY(ID)を追加[90023から147]

+0

'ALTER TABLE DOCのALTER COLUMN ID BIGINT NOT NULLで' 私を解きますエラー。 – monczek

+0

あなた自身の質問に答えた場合は、回答を投稿し、それを受け入れたものとしてマークしてください。しかし、私はあなたのコメントの文があなたの質問のこの部分にどのように答えているのか分かりません。「この列を追加して、同時に自動インクリメントとPKにするにはどうすればいいですか? – Tony

+0

上記の1行のコードでは、エラーを取り除くことしかできませんでした。列 "ID"にはnullを指定できません。 – monczek

答えて

1

H2は、列の定義をサポートしているAS SELECT CREATE:

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; 
+0

ありがとう!それはまさに私が必要なものです:) – monczek