MySQL Trigger über zwei Tabellen
Bernhard12
- datenbank
Hallo Leute,
ich benutze mysql 5.1.37 und möchte einen Trigger über 2 Tabellen zum Laufen kriegen.
Jedes Mal, wenn eine Reihe in table1 verändert wird, soll in table2 auf der zugehörigen Reihe (mit der gleichen id, im code fk_id) die Spalte modified auf NOW() gesetzt werden.
So sieht mein Code bisher aus.
CREATE TRIGGER trigger_name
BEFORE UPDATE ON table1
FOR EACH ROW
UPDATE table2
SET table2.modified = NOW()
WHERE table2.id = table1.fk_id
Ich bekomme den Fehler 1235:
This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' 5.1.37
Heißt das, so einen Trigger kann ich mit meiner mysql-Version nicht erstellen? Oder hab ich was anderes falsch gemacht?
Vielen Dank!
Hi!
This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' 5.1.37
Hast du diese Meldung schonmal in eine Suchmaschine geworfen und dich aufgrund der Antworten dann davon überzeugt, dass nicht bereits ein solcher Before-Update-Trigger für deine table1 existiert?
Lo!
Hello,
This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' 5.1.37
Heißt das, so einen Trigger kann ich mit meiner mysql-Version nicht erstellen? Oder hab ich was anderes falsch gemacht?
Das heißt mMn, dass schon ein Trigger auf "Before Update" auf die Tabelle_1 gesetzt ist. Den musst Du erst löschen, bevor Du einen neuen setzen kannst.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
moin,
Den musst Du erst löschen, bevor Du einen neuen setzen kannst.
oder aber oracle benutzen ;-)
Ilja
Hello Ilja,
Den musst Du erst löschen, bevor Du einen neuen setzen kannst.
oder aber oracle benutzen ;-)
Wie ist denn das bei Oracle mit der Priorität der Trigger?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
moin Tom,
Wie ist denn das bei Oracle mit der Priorität der Trigger?
ich zitiere mal aus einer webseite http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#ADFNS012
Trigger Evaluation Order
Although any trigger can run a sequence of operations either in-line or by calling procedures, using multiple triggers of the same type enhances database administration by permitting the modular installation of applications that have triggers on the same tables.
Oracle Database executes all triggers of the same type before executing triggers of a different type. If you have multiple triggers of the same type on a single table, then Oracle Database chooses an arbitrary order to execute these triggers.
Ilja
Hello,
If you have multiple triggers of the same type on a single table, then Oracle Database chooses an arbitrary order to execute these triggers.
Ist damit wirklich gemeint, dass das DBMS die Reihenfolge beliebig festlegt, oder dass der Operator die Reihenfolge beliebig, aber vorherbestimmbar festlegen kann?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Ist damit wirklich gemeint, dass das DBMS ...
Ja ist es
Gruß
emetiel
Hello,
Ist damit wirklich gemeint, dass das DBMS ...
Ja ist es
Ui! Das hätte ich aber von solch einem professionellen System nicht erwartet...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Ui! Das hätte ich aber von solch einem professionellen System nicht erwartet...
naja, wenn es dabei abhängigkeiten gibt und somit die reihenfolge relevant ist, kannst du es auch in einem trigger schreiben.
Ilja
Hello,
Ui! Das hätte ich aber von solch einem professionellen System nicht erwartet...
naja, wenn es dabei abhängigkeiten gibt und somit die reihenfolge relevant ist, kannst du es auch in einem trigger schreiben.
Dann ist ja der Weg von MySQL gar nicht sooo falsch.
Trigger gehören zwar nicht direkt zum Datenmodell, sondern zum Geschäfts(regel)modell, aber man muss eben sehr genau schauen, was man ändert.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Dann ist ja der Weg von MySQL gar nicht sooo falsch.
nicht wirklich, die trigger können sehr wohl vom gleichen typ sein, aber unabhängig voneinander.
Ilja