Announcement

Collapse
No announcement yet.

Trigger-Problem

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

  • Jonas Staudinger
    started a topic Trigger-Problem

    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

  • hwoess
    replied
    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

    Leave a comment:


  • Jonas Staudinger
    replied
    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?

    Leave a comment:


  • ebis
    replied
    Falk hat doch schon den kompletten Trigger gepostet...

    mußde halt auch verwenden...

    Leave a comment:


  • Jonas Staudinger
    replied
    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.

    Leave a comment:


  • Falk Prüfer
    replied
    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

    Leave a comment:

Working...
X