2010-12-15 7 views
1


Ich muss eine Tabelle (H2 eingebettete Datenbank) mit Feldern aus anderen Tabellen erstellen. Ich beschloss, CREATE TABLE AS Anweisung zu verwenden.Tabelle erstellen AS - wie Spalte mit PK hinzufügen?

My Code:
CREATE TABLE DOC AS
SELECT I.ID, I.STATUS, A.REMINDERINFORMATION
FROM IE802 I JOIN IE802_ATTRIBUTES A ON A.IE802_ID=I.ID;

Jede Zeile, die oberhalb von dem Code erzeugt wird, zusätzlich DOCID PrimaryKey haben muss. Wie kann ich diese Spalte hinzufügen und gleichzeitig Autoincrement und PK machen lassen?

Danke für irgendwelche Tipps und andere Lösungen!

Alternativ, wie kann ich bestehende I.ID zu PK machen?

Ich bekomme immer noch einen Fehler: Spalte "ID" darf nicht Nullable sein; SQL-Anweisung: ALTER TABLE DOC ADD PRIMARY KEY (ID) [90023-147]

+0

'ALTER TABLE DOC ALTER COLUMN ID BIGINT NOT NULL' löste mein Error. – monczek

+0

Wenn Sie Ihre eigene Frage beantwortet haben, posten Sie die Antwort und markieren Sie sie als akzeptiert. Ich sehe jedoch nicht, wie die Aussage in Ihrem Kommentar diesen Teil Ihrer Frage beantwortet: "Wie kann ich diese Spalte hinzufügen und sie gleichzeitig autoincremente und PK machen lassen?" – Tony

+0

Diese obige Codezeile hat nur einen Fehler beseitigt: Spalte "ID" darf nicht nullbar sein; – monczek

Antwort

1

H2 unterstützt Definitionen Spalte in 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

Danke! Genau das brauche ich :) – monczek