Java und Datenbank

  • Themenstarter Themenstarter hadda
  • Beginndatum Beginndatum
SQL:
Insert into bestehende_tabelle
Select * from table_ergebnis

Du musst nur darauf achten, dass der Select die gleiche Anzahl von Spalten zurückgibt, wie du fest angelegt hast.
 
Danke,
ja hast du recht.

Es gibt ein Fall, ich weiß nicht wie ich in SQL abfragen kann
ich füge alle Daten aber, es könnte sein in der bestehenden Tabelle ein alte Datensatz die gleiche Id hat dh in diesem Fall muss ich update machen.

hast du eine Idee? wie man während einfügen diese Fälle prüfen kann.
 
Soweit möglich, überprüfen ob die id schon existiert.

Ansonsten kannst du auch Unique-Constraints über mehrere Spalten definieren, weiß jetzt nicht was du alles für Spalten hast.

Diese verhindern dann ein Einfügen der doppelten Datensätze.

Die nicht eingefügten müsstest du dann in einem weiteren Schritt updaten.
 
zb:

Bei der Berechnung
Habe ich neue Tabelle

id wert datum
20 230 03.04.2008
21 400 05.04.2008
33 500 06.04.2008
40 650 05.04.2008
50 800 07.04.2008
51 900 07.04.2008

Und jetzt möchte ich alle gerechneten Werte in der bestehenden Tabellen einfügen.
Id= 20 existiert schon in der Bestehende Tabelle , bei Id=20 sollte nur den Wert und Datum geändert werden.

id wert datum
20 400 03.04.2008
26 400 05.04.2008
36 500 06.04.2008
46 650 05.04.2008
56 800 07.04.2008
57 900 07.04.2008
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

Wenn ich Unique-Constraints benutze, dann wenn nur eine Id in der bestehenden Tabelle existiert, dann werden andere Werte nicht eingefügt.
wie kann ich diesen Fall lösen?

danke
 
Wie gesagt - vorher nachschauen!
Z.B. so:

SQL:
select id, wert, datum from neue_werte
where id in (select id from alte_werte)
into temp schon_vorhanden;

update alte_werte set
wert = (select wert from schon_vorhanden where schon_vorhanden.id = id),
datum = (select datum from schon_vorhanden where schon_vorhanden.id = id)
where id in (select id from schon_vorhanden);

drop table schon_vorhanden;

Alternativ könntest du auch einen Trigger schreiben, der dir wenn dein Constraint anschlägt, ein Update des Datensatzes macht. Trigger sind aber generell etwas langsamer.
 
Ja hast du recht mit Trigger oder Cursor für menge Daten ganz schlecht damit zu arbeiten
aber dein Beispiel war hilfreich, danke sehr

Viele Grüße,
Hadda
 
Zurück