2010-12-15 62 views
1


Je dois créer une table (base de données intégrée H2) en utilisant les champs d'autres tables. J'ai décidé d'utiliser la déclaration CREATE TABLE AS.CREATE TABLE AS - comment ajouter une colonne avec PK?

mon 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;

Chaque ligne qui est généré à partir du code ci-dessus doivent en outre avoir DOCID PrimaryKey. Comment puis-je ajouter cette colonne et la rendre autoincrément et PK en même temps?

Merci pour tous les conseils et autres solutions!

Sinon, comment puis-je rendre I.ID existant PK?

Je reçois toujours une erreur: La colonne "ID" ne doit pas être nulle; instruction SQL: ALTER TABLE DOC ADD PRIMARY KEY (ID) [90023-147]

+0

'ALTER TABLE DOC ALTER ID de colonne BIGINT NOT NULL' résolu mon Erreur. – monczek

+0

Si vous avez répondu à votre propre question, postez la réponse et marquez-la comme acceptée. Cependant, je ne vois pas comment la déclaration dans votre commentaire répond à cette partie de votre question: "Comment puis-je ajouter cette colonne et la rendre autoincrément et PK en même temps?" – Tony

+0

Cette ligne de code ci-dessus s'est seulement débarrassée d'une erreur: la colonne "ID" ne doit pas être nulle; – monczek

Répondre

1

H2 supporte les définitions des colonnes dans CREER 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; 
+0

Merci! C'est exactement ce dont j'ai besoin :) – monczek