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
Announcement
Collapse
No announcement yet.
Trigger-Problem
Collapse
X
-
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
-
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:
-
Falk hat doch schon den kompletten Trigger gepostet...
mußde halt auch verwenden...
Leave a comment:
-
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ß,
JonasZuletzt editiert von Jonas Staudinger; 05.05.2011, 15:16.
Leave a comment:
-
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?
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:
Leave a comment: