DB2: Insert into avec sélectionner, incrémentation d'une colonne pour chaque nouvelle ligne par un pour chaque insertion?
Im essayant de copier le contenu d'une colonne dans une table à l'autre et en même temps vouloir remplir la colonne de clé primaire avec un nombre d'incrémentation pour chaque ligne de création:
J'ai essayé de faire le suivant:
INSERT INTO Table1 (col1, col2) VALUES((SELECT col1 FROM table2), (SELECT NEXTVAL FOR col2_SEQ FROM sysibm.sysdummy1));
mais obtiens l'erreur suivante:
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0348N "NEXTVAL FOR col2_SEQ" cannot be specified in this
context. SQLSTATE=428F
Il semble que je ne peux utiliser la valeur de la séquence de cette façon, est-il un autre moyen que je peux accomplir ce que je suis en train de faire? J'ai juste besoin col2 dans la table1 à être rempli avec un unique type BIGINT pour chaque nouvelle entrée de col1 from table2
OriginalL'auteur Mo. | 2012-02-01
Vous devez vous connecter pour publier un commentaire.
Si vous êtes sur Linux/Unix/Windows (et probablement pour les autres), je pense que vous voulez juste
VALEUR SUIVANTE DE la séquence
. Vous n'avez pas besoin de l'appoint de sélectionner à partir de sysdummy dans ce contexte.D'une nouvelle VALEUR pour db2 9.7!
quelle plate-forme et la version de DB2 êtes-vous en cours d'exécution?
OriginalL'auteur bhamby
Il y a 3 méthodes dans laquelle les valeurs peuvent être générés dans DB2.
GENERATE_UNIQUE
fonctionIDENTITY
colonneSEQUENCE
objetEn supposant
col2_SEQ
est créé similaire à la déclaration ci-dessous:L'instruction insert peut être écrite comme suit:
Plus d'informations, sur chacune des trois méthodes mentionnées ci-dessus, peut être trouvé ici
OriginalL'auteur Deepa
Il y a aussi autre syntaxe maintenant, qui a travaillé pour moi dans DB2 10.x
OriginalL'auteur kns
Peut-être vous devriez spécifier les colonnes:
et
insert into table1 select col1, default from table2
OriginalL'auteur Peter Miehle