Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: UPDATE nicht ausführen, wenn nichts?

  Alt 18. Jun 2016, 22:51
Per Trigger mit :new/ :old zu arbeiten ist wahrscheinlich das gängige Verfahren.
Alternativ kannst Du das Update so gestalten, dass es
- 0 Rows betrifft und damit auch
- ein Trigger nicht zündet bzw.
- ein Trigger gar nicht definiert sein muss oder
- unspezifisch sein kann:
Für ein "leeres" Update kann man z.B. als Bedingung
Code:
where exists
mit
Code:
Select <aktueller Feldinhalt/Felder> from UpdateTable where..
except
Select <neue Feldwerte oder bestehende Feldwerte> from <jenachdem> <where ..>
kombinieren.

Das ist wahrscheinlich nicht viel weniger als "ganz viel und hier auch ganz viel", aber es hat den Charme, dass man nicht nachdenken muss und die Statements anhand der Felder der Tabelle generisch bauen kann (ohne PK und andere frei wählbare Ausnahmen). Ob es dann zündet, regelt das "except".
Was final geupdated wird, steht unabhängig davon in der Update ExpressionList. Kann man gut finden, weil weiterer Freiheitsgrad, kann aber auch falsch gemacht werden.

Andere DB können im Update statt der ExpressionList auch gleich Selects verwenden, dass macht es etwas eleganter.

Unterscheiden muss man hier bei den Where Bedingungen natürlich zwischen SingleRow Updates und Massenupdates.
Gruß, Jo
  Mit Zitat antworten Zitat