Announcement

Collapse
No announcement yet.

Trigger-Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Trigger-Problem

    Hallo zusammen!

    Ich musst sagen, ich habe schon desöfteren mit mySQL zu tun gehabt, jedoch noch nie mit Triggern. Obwohl ich google & SuFu schon heißlaufen habe lassen, komme ich nicht weiter.
    Mein Trigger soll, sobald in die Tabelle eine Zeile eingefügt wird, den Wert von `usergroup` in '2, 22' ändern. (Sinn und Zweck sei einmal dahingestellt, ich würde gerne wollen, dass das so funktioniert ) Ich habe den CREATE TRIGGER Befehl wie folgt aufgebaut, jedoch tut dieser nicht das, was er soll und bedingt mir stattdessen eine Fehlermeldung, wenn ich einen INSERT Befehl auf die Tabelle ausführe:

    DELIMITER |
    CREATE TRIGGER aa_usergroup22
    AFTER INSERT on AA_fe_users
    FOR EACH ROW
    BEGIN
    UPDATE AA_fe_users
    SET usergroup = '2,22'
    WHERE uid = NEW.uid;
    END;
    |
    DELIMITER;

    Leider kann ich gerade nicht auf die DB zugreifen, daher auch den Fehler nicht kopieren. Aber Google sagt, es habe etwas mit der Selben Tabelle zu tun.
    Ist es gar nicht möglich, einen solchen Trigger auf die gleiche Tabelle anzuwenden, von der er "getriggert" wird? Wenn doch, wo ist mein Fehler?

    Vielen Dank schonmal, bin am Verzweifeln

    Gruß,
    Jonas

  • #2
    Hallo,
    Originally posted by Jonas Staudinger View Post
    ...Ist es gar nicht möglich, einen solchen Trigger auf die gleiche Tabelle anzuwenden, von der er "getriggert" wird?
    Genauso ist es!

    Verwende einfach einen BEFORE-Trigger und manipuliere den Wert über die Pseudospalte NEW.usergroup.

    [highlight=sql]
    CREATE TRIGGER aa_usergroup22
    BEFORE INSERT on AA_fe_users
    FOR EACH ROW
    BEGIN
    SET NEW.usergroup = '2,22';
    END;
    [/highlight]

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Vielen Dank für die rasche Antwort! Ich verwende jetzt folgenden Trigger:

      CREATE TRIGGER aa_usergroup22
      BEFORE INSERT on AA_fe_users
      FOR EACH ROW
      UPDATE AA_fe_users
      SET NEW.usergroup = '2,22'
      WHERE uid = NEW.uid;

      Leider kommt beim INSERT immer noch die Meldung:

      #1442 - Can't update table 'AA_fe_users' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

      Ist da noch ein Fehler drin?

      Gruß,
      Jonas
      Zuletzt editiert von Jonas Staudinger; 05.05.2011, 15:16.

      Comment


      • #4
        Falk hat doch schon den kompletten Trigger gepostet...

        mußde halt auch verwenden...

        Comment


        • #5
          Wenn ich den Trigger so benutze, wie Falk ihn geschrieben habe, bekomme ich einen Syntax Error..

          #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5

          An was kann's liegen?

          Comment


          • #6
            Vielleicht solltest du das Beispiel nochmal genau ansehen, dort steht nach FOR EACH ROW in der nächsten Zeile nämlich BEGIN und du hast laut deiner Angabe UPDATE AA_fe_users dort stehen. Glaubst du nicht, dass das ein ziemlicher Unterschied ist?

            bye,
            Helmut

            Comment

            Working...
            X