-
SQL Update Werte aus 2 Tabellen?
Hallo Forum,
Ich habe folgendes SQL:
Ich würde gerne 3 Felder aktualisieren. 2 der Felder sind in test1 ​n und ein Feld ist in der Tabelle test2 ​ Gibt es eine Möglichkeit ein Update auf 2 Tabellen zu machen? Ich habe es mit einem join probiert hat aber leider nicht so funktioniert. Der Wert dem ich dem Feld aus der zweiten Tabelle vergeben will sollte konstant sein.
Ich stehe gerade etwas auf dem Schlauch und weiß nicht weiter. Evt. hat einer von euch einen Ansatz.
Code:
UPDATE test1 t1 (t1.field,
t1.field,
t2.field = 5)
Code:
UPDATE test1 t1
SET (t1.field,
t1.field,
t2.field) =
(SELECT test,
test,
test
FROM table(test_function(
02172,
'TEST',
date('2021-07-26'),
'TEST',
5455612)
)
join test2 t2 on t2.id = t1.id
where t1.test = test
and t1.test = test
);
-
Nein, das ist nicht möglich.
Der Update erlaubt nur als Ziel eine Tabelle.
Die Alternative ist eine neue Tabelle mit allen benötigten Felder und einem "Instead Of"-Trigger.
Der Trigger wird beim Update aufgerufen und kann dann 2 andere Tabellen mit Einzelupdates updaten.
Letztlich ist es aber dasselbe, da du 2 Updates auch selber kodieren kannst.
Empfehlenswert ist da natürlich Journalisierg und Commit=*CHG, da die 2 Updates ja im Kontext unteilbar sein sollen und das geht nur mit Transaktionen (Commit).
-
Ok vielen dank @Fuerchau wie immer :-D Ich schau mir das mal mit dem Instead Of - Trigger an.
Aber mit zwei Einzelupdates hätte ich ja immer noch folgendes Problem:
Wie komme ich an die ID der akualisierten Zeile heran? Also ich aktualisiere eine oder mehrere Zeilen in der Tabelle T1 und will daraufhin die entsprechenden Zeilen in der T2 aktualisieren.
-
Ein Instead Of Trigger kann nur auf eine SQL-View erstellt werden. Damit musst Du zuerst eine View erstellen und dann den Instead of Trigger ...
Also ich würde das Ganze mit 2 unabhängigen Update-Statements erledigen.
Oder Du schreibst Dir ein kleines Progrämmchen (oder Stored Procedürchen), das die erste Datei in einer Schleife liest und dann den Update in der ersten und im Anschluss in der zweiten Datei erledigt. ... das ist sowie so die sauberste Lösung. Falls ein "fauler" Satz dabei ist, können die übrigen Sätze noch upgedated werden. Ansonsten heißt es nur alles oder nichts.
Birgitta
-
@B.Hauser
selbst in einem Programm hätte ich ja aber immer noch das Problem der ID´s welches zu aktualisieren gibt in der zweiten Tabelle. Also die Funktion liefert mir X Werte aus die dann aktualisiert werden in der 2 Tabelle. mit IDENTITY_VAL_LOCAL() würde ich ja aber auch immer nur die letzte ID bekommen die aktualisiert wurde?
-
Identity_Val_Local ermittelt die letzte Id.
Wenn Du eine Schleife baust, dann kannst Du doch vor dem Update die Indentity ermitteln und dann damit den zweiten Update machen.
-
Nun ja, es gibt da noch den:
Select bla [into ...] from final table (update .....)
Select bla [into ...] from final table (insert ....)
Damit kannst du den Identity_Val_Local() vergesssen, da dieser
a) nur auf die letzte Identity funktioniert, die z.B. durch Trigger verfälscht werden kann
b) Du eine Identity-Column überhaupt erst mal haben musst.
Der "Select ... from final table ()" muss als Ergebnis genau nur 1 Satz zurückgeben.
Er liefert zusätzlich auch die Felder, die ggf. durch Default's oder Trigger ergänzt wurden.
Similar Threads
-
By Domeus in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 15-06-21, 15:37
-
By fdh in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 02-12-19, 13:32
-
By tarkusch in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 26-07-17, 09:12
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 07-07-16, 21:35
-
By KingofKning in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 07-07-14, 14:15
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks