![]() |
Datenbank: Firebird • Version: 3.x • Zugriff über: IBDAC
Wie mehrere Felder mit unterschiedl. where-Teilen in *einem* Update-Statement ändern?
Wie kann ich den folgenden SQL-Code in *einem* Update-Statement zusammen ausführen? Ich habe 10 dieser Statements, die ich nicht alle nacheinander ausführen möchte. Gibt es dafür eine spezielle SQL-Syntax?
Code:
Update MyTable set Feld1 = Feld1NEU where Feld1NEU <> 0;
Update MyTable set Feld2 = Feld2NEU where Feld2NEU <> 0; Update MyTable set Feldn = FeldnNEU where FeldnNEU <> 0; |
AW: Wie mehrere Felder mit unterschiedl. where-Teilen in *einem* Update-Statement änd
Ich würde es an deiner Stelle so lassen. Alles andere wäre herumgetrickse und kein valides SQL.
|
AW: Wie mehrere Felder mit unterschiedl. where-Teilen in *einem* Update-Statement änd
SQL-Code:
Anschließend dann die Parameter belegen.
UPDATE Tabelle SET Feld1 = :Wert1, Feld2 = :Wert2 WHERE Dings = 1
Delphi-Quellcode:
[edit]Sry, Frage nicht richtig verstanden [/edit]
Query.FieldByName(´Wert1´).AsString := ´Hallo‘‘;
Query.FieldByName(´Wert2´).AsInteger := 42; Query.ExecSQL; |
AW: Wie mehrere Felder mit unterschiedl. where-Teilen in *einem* Update-Statement änd
Nur so dahingeschrieben:
SQL-Code:
Finde ich persönlich aber eher hässlich und ich bin mir auch nicht sicher, ob das überhaupt performanter ist.
Update MyTable set
Feld1 = IIF(Feld1NEU <> 0, Feld1NEU, Feld1), Feld1 = IIF(Feld2NEU <> 0, Feld2NEU, Feld2), Feldn = IIF(FeldnNEU <> 0, FeldnNEU, Feldn) WHERE (Feld1NEU <> 0) or (Feld2NEU <> 0) or (FeldnNEU <> 0) |
AW: Wie mehrere Felder mit unterschiedl. where-Teilen in *einem* Update-Statement änd
Zitat:
Code:
Damit wird das dann auch mit eingeschaltetem AutoCommit nur eine Transaktion.
SET TERM ^;
EXECUTE BLOCK AS BEGIN Update MyTable set Feld1 = Feld1NEU where Feld1NEU <> 0; Update MyTable set Feld2 = Feld2NEU where Feld2NEU <> 0; Update MyTable set Feldn = FeldnNEU where FeldnNEU <> 0; END^ SET TERM ;^ |
AW: Wie mehrere Felder mit unterschiedl. where-Teilen in *einem* Update-Statement änd
Mehrere Kommandos können als Script gemeinsam an den Server gesendet werden.
![]() Bsp.:
Code:
Update MyTable set Feld1 = Feld1NEU where Feld1NEU <> 0;
Update MyTable set Feld2 = Feld2NEU where Feld2NEU <> 0; Update MyTable set Feldn = FeldnNEU where FeldnNEU <> 0; Commit; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz