Bernhard12: MySQL Trigger über zwei Tabellen

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!

  1. 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!

  2. 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

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. moin,

      Den musst Du erst löschen, bevor Du einen neuen setzen kannst.

      oder aber oracle benutzen ;-)

      Ilja

      1. 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

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. 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

          1. 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

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Hi,

              Ist damit wirklich gemeint, dass das DBMS ...

              Ja ist es

              Gruß
              emetiel

              1. 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

                --
                 ☻_
                /▌
                / \ Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
                1. 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

                  1. 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

                    --
                     ☻_
                    /▌
                    / \ Nur selber lernen macht schlau
                    http://bergpost.annerschbarrich.de
                    1. 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