AJRames Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Hi Leut, ich hab n kleines Problem und mein "Lösungsweg" funktioniert leider nicht. Folgendes: Ich schreibe einen Datensatz in eine Tabelle. Mit 2 Werten aus diesem Datensatz möchte ich eine Rechenoperation durchführen (spalte 1 - spalte 2 = Inhalt von Spalte 3). Nun habe ich versucht dafür einen Trigger zu schreiben, aber das geht nicht, da ich auf die Tabelle, auf die der Datensatz geschrieben wird den trigger ansetz... Da kommt die Fehlermeldung: "#1442 - Can't update table 'a_num_ranges' in stored function/trigger because it is already used by statement which invoked this stored function/trigger." Der Trigger sieht ungefähr so aus: CREATE TRIGGER calc_count_range AFTER INSERT ON test FOR EACH ROW BEGIN UPDATE test SET count = NEW.short_from-NEW.short_to; END Jemand ne idee? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Carnie Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Ja du verfolgst den falschen Ansatz. Es besteht nicht wirklich eine Notwendigkeit das in einer dritten Spalte zu speichern. Du kannst das auch einfach beim auslesen der Daten berechnen oder eine View anlegen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Hi Leut, ich hab n kleines Problem und mein "Lösungsweg" funktioniert leider nicht. Folgendes: Ich schreibe einen Datensatz in eine Tabelle. Jemand ne idee? Ja, vergiss den Trigger... Wenn du eh den Datensatz in die Tabelle schreibst, dann füll doch auch gleich deine 3. Spalte mit den berechneten Werten ? Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
AJRames Geschrieben 11. August 2009 Autor Teilen Geschrieben 11. August 2009 Hm, ok....wär halt weniger arbeit für den Webserver, darum dacht ich mir lös ich das mit so ne procedure... Aber dann halt nicht trotzdem danke! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Felder die berechnet werden speichert man eigentlich nicht sondern läst diese zur Laufzeit immer erst berechnen und ausgeben. Denn folgendes Szenario. Feld1: 5 Feld2: 7 Feld3 ist Summe aus Feld1 und Feld2 = 12 Jetzt ändert jemand Feld1 von 5 auf 8 und schon stimmt das ganze nicht mehr. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dbwizard Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Felder die berechnet werden speichert man eigentlich nicht sondern läst diese zur Laufzeit immer erst berechnen und ausgeben. Frank - Ja/Nein/Vielleicht :-) Kommt auf den Anwendungsfall an. Gruss Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 11. August 2009 Teilen Geschrieben 11. August 2009 Hm, ok....wär halt weniger arbeit für den Webserver, darum dacht ich mir lös ich das mit so ne procedure... Aber dann halt nicht trotzdem danke! Wieso? Du schreibst auch nur die Spaltennamen ins UPDATE Statement und lässt die Datenbank das ganze erledigen. Wenn Du Oracle 11 verwendest kannst Du auch virtuelle Spalten anlegen, die dann deine Berechnung en beinhalten. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.