![]() |
idee für trigger gesucht
Es geht um Firebird 1.5, und folgende Tabelle
[sql]CREATE TABLE PLANUNG ( BEREICH INTEGER NOT NULL, JAN NUMERIC(9,2), FEB NUMERIC(9,2)); wenn jetzt ein wert geändert wird, soll wiefolgt aufaddiert werden: Für jeden Bereich lässt sich mit hilfe einer zweiten tabelle eine Zielzeile nachschlagen, und alle Zeilen sollen dann in diese Zielzeile aufaddiert werden. Beispiel: Bereich|jan|feb 100 |10 |10 101 |5 |5 102 |5 |5 101 und 102 haben also die zielspalte 100 wenn jetzt der wert in zeile 102 für februar auf 10 geändert wird, soll der wert für februar in zeile 100 demzufolge auf 15 geändert werden (alle zeilen die als zielzeile die 100 haben aufaddiert) Bin nicht so sicher in SQL Language und finde keinen richtigen ansatz :( |
Re: idee für trigger gesucht
Das wäre nicht sehr gut :?
Nach 2 mal speichern wäre es dann 25, obwohl das in keinem Zusamhang mit den Daten stehen würde Berechnete Felder werden niemals (gar nicht, nüscht, nada, niente,...) in der DB gespeichert, sondern immer nur beim Abfragen errechnet! Willst du also wissen wieviele XYZ zur der ID vorhanden sind, brauchst du eine Abfrage, die das ganze aufsummiert. |
Re: idee für trigger gesucht
Hmmm..eigentlich hast du ja recht....aber ich hätt'S trotzdem gern so ;-)
Ich könnte ja die Summenzeile jedesmal löschen und als neu berechneten Datensatz einfügen,dann wär das mit der 25 geklärt. Der trigger soll auch nich after insert laufen,sondern after update,denn wenn ein datensatz eingefügt wird sind jan..dez IMMER 0 Ne generelle Frage: wie kann ich mit einem Trigger,wenn sich eine Zeile ändert,eine andere in der gleichen Tabelle manipulieren... |
Re: idee für trigger gesucht
Hi,
Zitat:
Es macht also schlicht keinen Sinn (wie schon gesagt wurde) berechnete WErte in einer Datenbank zu speichern. Zudem fällt mir gerade ein: Ich denke Dein Wunsch alles in einer Tabelle zu regeln wird nicht gehen, wenn Du auch nen Update-Trigger dafür verwenden willst. Denn sobald Du den Wert für 100 per Update ändern willst, wird der feuern und einen Wert ändern wollen, was dazu führt, dass der Update-Trigger wieder feuert...., d.h. Du wirst innerhalb kürzester Zeit Deinen Server lahmlegen.... Wäre aber mal interessant zu testen, was dann passiert.... Grüße Lemmy P.S.: Noch was: Wenn Du den Datensazt jedesmal löschen willst kannst Du doch gleich hergehen und die Abfrage, die Du für die Aktualisierung der Spalte benötigst auch gleich zur Abfrage verwenden. Vorteil: Der Wert wird nur noch dann berechnet, sobald er benötigt wird und Du brauchst nicht unbedingt eine Konstruktion die (zumindest aus meiner Sicht) keinen Sinn ergibt! Von der Tatsache mal abgesehen, dass bei umfangreichen Arbeiten deine Datenbankdatei sehr schnell sehr groß werden wird (dauerndes delete und insert) Grüße Lemmy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 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 by Thomas Breitkreuz