TRIGGER
Ernst Riha
- datenbank
0 MudGuard0 MudGuard0 Ernst0 MudGuard
Hallo, ich stehe mit einem Trigger an, den ich in WordPress brauchte, um eine Werte-Kombination in eine eigene Tabelle zu schreiben, sobald eine neue Seite (post) erstellt wird . Habe folgen des versucht:
XXX...posts ist die WP-Tabelle, FM-Trauerfall die zu beschreibende
CREATE TRIGGER nach_trauerfall_neuz
AFTER INSERT
ON XXX...posts FOR EACH ROW
BEGIN
IF NEW.post_name IS NOT NULL THEN
INSERT INTO FM_Trauerfall (ID_Post, Name)
VALUES(new.ID,NEW.post_name);
END IF;
END
Was mache ich falsch? Bin für jeden Tipp dankbar ...
Hi,
Was mache ich falsch? Bin für jeden Tipp dankbar ...
Du sagst nicht, was passiert.
Bekommst Du einen Syntaxfehler, wenn Du das CREATE TRIGGER
ausführst?
Oder wird das CREATE TRIGGER
ausgeführt, aber der Trigger macht das INSERT` nicht?
Oder …?
cu,
Andreas a/k/a MudGuard
Der Eintrag in der Zieltabelle fehlt ... als ob der Trigger wirkungslos bliebe.
Hi,
CREATE TRIGGER nach_trauerfall_neuz AFTER INSERT ON XXX...posts FOR EACH ROW BEGIN IF NEW.post_name IS NOT NULL THEN INSERT INTO FM_Trauerfall (ID_Post, Name) VALUES(new.ID,NEW.post_name); END IF; END
muß das NEW.ID heißen? Großgeschrieben?
cu,
Andreas a/k/a MudGuard
werd das NEW gross gleich testen, danke!
Hallo Ernst,
ich bezweifle, dass SQL Schlüsselwörter case sensitive sind.
Welches DBMS ist das, ganz genau?
Rolf
Hi,
ich bezweifle, dass SQL Schlüsselwörter case sensitive sind.
ich eigentlich auch. Aber das war das einzige, was mir an dem Statement aufgefallen ist.
Und wenn ich mit der SqlWorkbench auf Mysql-DBs gehe, sind die Tabellennamen case-sensitive (die Spaltennamen dagegen nicht - warum auch immer).
Und in gewisser Weise bezeichnet das NEW ja eine Tabelle(nzeile) …
In allen Mysql-Trigger-Beispielen, die ich gesehen habe, waren OLD und NEW immer großgeschrieben.
Und der Test mit NEW.ID statt new.ID kostet ja auch keinen großen Aufwand. Also lieber kurz ausprobieren, um das als Fehlerursache sicher auszuschließen.
cu,
Andreas a/k/a MudGuard
Hallo Andreas,
man sollte wohl auch mal prüfen, ob SQLWorkbench (oder phpmyadmin) den Trigger an der XXX...posts Tabelle auflisten. Müssten sie eigentlich. Aber vielleicht klebt das Ding irgendwo anders, vielleicht gibt's die Tabelle mit unterschiedlichen Präfixen mehrmals, oder die FM...Tabelle hat ein anderes Präfix und der Trigger findet seine Zieltabelle nicht. Oder es gibt beim INSERT einen Duplicate Key, oder eine erforderliche Spalte wird nicht befüllt.
Da gibt's siebenunddrölfzig Möglichkeiten, die ohne Kenntnis der DB-Struktur nicht zu finden sind.
Keine Ahnung, wie MYSQL Fehler berichtet, die bei der Ausführung von Triggern auftreten. Lassen die das Statement scheitern, das den Trigger getriggert hat? Bleibt der Trigger leise schluchzend in seiner Ecke und jammert "ich kann das aber nicht!"? Gibt's eine Logdatei?
Rolf
Danke an alle! Der Trigger arbeitet jetzt mit dem grossen NEW. wie beabsichtigt.
Hi,
Danke an alle! Der Trigger arbeitet jetzt mit dem grossen NEW. wie beabsichtigt.
Hatte ich also doch den richtigen Riecher - freut mich, daß es jetzt funktioniert.
Und noch mehr, daß Du das hier auch zurückgemeldet hast!
cu,
Andreas a/k/a MudGuard