INSERT – INTO – SELECT – Statement

nordlender

Benutzer
Beiträge
7
Hallo zusammen,

ich soll eine Tabelle um weitere Sprache erweitern. Es werden erst Mal deutsche Texte übernommen und nur die Sprache - ID geändert. Dazu habe ich einen INSERT – INTO – SELECT – Statement benutz. Bekomme aber eine Fehlermeldung. Kann jemand eventuell sagen, wo der Fehler liegt?

Original Tabelle :

DIVISIONID LANGID PRESENTATIONNAME
1 1 Woche
1 1 Quartal
1 1 Jahr
1 1 Tag
1 1 Monat
Ziel Tabelle:
DIVISIONID LANGID PRESENTATIONNAME
1 1 Woche
1 1 Quartal
1 1 Jahr
1 1 Tag
1 1 Monat
1 2 Woche
1 2 Quartal
1 2 Jahr
1 2 Tag
1 2 Monat
SQL - Statement :
Code:
insert  into text (DIVISIONID, LANGID ,  PRESENTATIONNAME)
  select DIVISIONID, 2  , PRESENTATIONNAME from  text where LANGID = 1 and DIVISIONID = 1 ;
Danke im Voraus

Ps. DB – DB2
 
Werbung:
AW: INSERT – INTO – SELECT – Statement

Der SQL sieht für mich korrekt aus, kann es hier aber nicht ausprobieren.

Die Meldung sieht mir abern ich nicht nach der Original DB2 Fehlermeldung aus. Ist TEXT eine Tabelle oder vielleicht eine VIEW ?

Grüße
Thomas
 
AW: INSERT – INTO – SELECT – Statement

TEXT – ist eine Tabelle.

Die Meldung sieht mir aber ich nicht nach der Original DB2 Fehlermeldung aus

Kann vielleicht daran liegen, dass wir als Oberflächetool, für den zugriff auf DB, ein selbst programmiertes Tool benutzen..
 
AW: INSERT – INTO – SELECT – Statement

Kannst Du mal die komplette Tabellenstruktur von TEXT zeigen?

Ich vermute, da gibt es eine ID-Spalte (Primary Key) der mit einer SEQUENCE oder einem TRIGGER automatisch gefüllt wird. Manche Trigger erlauben keinen Multi-Row-Insert wie der INSERT - FROM - SELECT einer ist.

Grüße
Thomas
 
AW: INSERT – INTO – SELECT – Statement

Die Tabelle TEXT hat fünf Spalten mit NOT NULL und eine Spalte die NULL sein darf. D.h. beim Einfügen musst Du Werte für diese fünf NOT NULL Spalten liefern.


PLANTID NOT NULL
DIVISIONID NOT NULL
LANGID NOT NULL
DIMID NOT NULL
PRESENTATIONNAME NOT NULL
DEFAULTTEXT NULL

Eventuell get es so...
Code:
insert into  text (PLANTID, DIVISIONID, LANGID , DIMID,  PRESENTATIONNAME)
select             PLANTID, DIVISIONID, 2      , DIMID,  PRESENTATIONNAME
  from  text where LANGID = 1 and DIVISIONID = 1 ;
PLANTID ist vielleicht eine eindeutige Nr. eventuell brauchst Du hier eine SEQUENCE als Zahlengenerator. Das gleiche gilt eventuell für DIMID. Eine Vermutung eben, dass ist so für mich nicht ersichtlich.

Grüße
Thomas
 
Werbung:
Zurück
Oben