AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi UPDATE nicht ausführen, wenn nichts?
Thema durchsuchen
Ansicht
Themen-Optionen

UPDATE nicht ausführen, wenn nichts?

Ein Thema von himitsu · begonnen am 17. Jun 2016 · letzter Beitrag vom 21. Jun 2016
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#1

UPDATE nicht ausführen, wenn nichts?

  Alt 17. Jun 2016, 11:00
Datenbank: postgres • Version: 5.3 • Zugriff über: PgDAC
Warum hat das UPDATE-SQL kein Flag für "tu nichts, wenn sich kein Feld ändert" ?

Wenn ich nicht will, dass Trigger ausgelöst werden, wenn sich nicht ändert, dann darf ich alle Felder im SET nochmal im WHERE gegenprüfen.
> Doppelter Code
> OK, wenn es richtig viel wird, könnte man die Auswertungen z.B. in einen LATERAL-JOIN auslagern und im WHERE/SET nur noch das Ergebnis vergleichen/zuweisen.

SQL-Code:
UPDATE test
SET aaa = hierganzviel
    bbb = hierauchganzviel
WHERE id = ...
  AND aaa IS DISTINCT FROM hiernochmalganzviel
  AND bbb IS DISTINCT FROM hierauchnochmalganzviel
Aber so ein "kurzer" Befehl ala "DISTINCT" wäre doch eigentlich ganz praktisch?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: UPDATE nicht ausführen, wenn nichts?

  Alt 17. Jun 2016, 11:35
Warum hat das UPDATE-SQL kein Flag für "tu nichts, wenn sich kein Feld ändert" ?
Weil der mündige Benutzer nie im Leben bereits vorhandene Daten mit sich selbst überschreiben würde?
Und wenn doch, dann hat er gute Gründe dafür?


Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: UPDATE nicht ausführen, wenn nichts?

  Alt 17. Jun 2016, 12:35
Außerdem ist der DB-Aufwand, das zu prüfen auch einfach höher als einfach ohne Prüfung zu schreiben. Man müsste ja bei jedem Schreibvorgang vorher erst noch prüfen, ob die Daten übereinstimmen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#4

AW: UPDATE nicht ausführen, wenn nichts?

  Alt 17. Jun 2016, 14:26
Darum ja auch als "aktivierbares" Zusatzfeature, das Standardmäßig nicht aktiv ist.
Um nur die Trigger neu anzustoßen, machen Viele oft einfach einen Post ohne Änderung, ala SET aaa=aaa Der Aufwand das selber zu prüfen ist auch größer (längeres SQL und eventuell doppelte Auswertung), als wenn die DB das von selber schon könnte.


Ich finde das wäre ein gutes Grundfeature, so wie ein INSERT OR UPDATE.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: UPDATE nicht ausführen, wenn nichts?

  Alt 17. Jun 2016, 14:34
Oder im Trigger prüfen was und ob sich etwas geändert hat und nur dann eine Aktion ausführen
Fritz Westermann
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.904 Beiträge
 
Delphi 12 Athens
 
#6

AW: UPDATE nicht ausführen, wenn nichts?

  Alt 17. Jun 2016, 15:38
Oder im Trigger prüfen was und ob sich etwas geändert hat und nur dann eine Aktion ausführen
genau, das ist das Standardprocedere!
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 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