Zitat:
RecordsAffected
Das UPDATE steht in einem Trigger einer anderen Tabelle, da gibt es das TDataSet nicht.
Es gibt zwar das FOUND (Update hat mindestens einen Datensatz getroffen ... abhängig vom WHERE), aber das ist ja keine Lösung, da es ja nicht meinen Trigger und den nachfolgenden Code, sondern andere Trigger betrifft (und die sind oft paar Jahrzehnte alt und demnach nicht immer gut gebaut).
Da man auch nicht "weiß" was für Trigger überall dran hängen oder mal dran hängen werden, ist auch ein DISABLE TRIGGER eine Lösung.
SELECT DISTINCT braucht ja auch keiner, da man das über ein passendes GROUP BY oder WHERE auch selber bauen könnte.
SQL-Code:
UPDATE CHANGED test
SET aaa = hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel
hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel
hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel
hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel,
bbb = hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
WHERE id = ...
AND nochwas
sähe doch besser aus, als
SQL-Code:
UPDATE test
SET aaa = hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel
hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel
hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel
hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel,
bbb = hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
WHERE id = ...
AND nochwas
AND (aaa = hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel
hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel
hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel
hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel_hierganzviel
OR bbb = hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel
hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel_hierauchganzviel)
wenn das
DBMS aaa mit dem Ergebnis von hierganzviel vergleichen und nur bei Unterschied das Update machen würde.
Ja OK, man könnte auch ein gang blöd eine Prüfung ala
SQL-Code:
IF old = new THEN
RETURN new
END IF;
in alle Trigger rein machen, aber wozu überhaupt den Datensatz updaten, wenn sich doch nix ändert.
PS: Wir haben an fast allen Tabellen einen echt doofen automatisch generierten Trigger, der nichts prüft und bei
jedem UPDATE ein Feld modified_date=current_time setzt.
und dann teilweise noch paar Trigger, die manchmal nicht grade wenig machen. (z.B. die Mengen/Preise von allem neu berechnen)
Das GANZ_VIELE könnte ich zwar in einen LATERAL JOIN auslagern und dann im WHERE und SET quasi kurze temporäre Variablenbenutzen, aber da muß ich auch erstma gucken, wie das nochmal ging.
Bin doch bestimmt nicht der Einzige, der das bissl "doof" findet, da hätte man da doch auch gleich was in der
SQL-Syntax für vorsehen können?