einfacher Trigger

WenzelPaul

Mitglied
Hallo,

ich versuche mich grad an triggern aber die mysql bedienungsanleitung bringt mir nix.

Wie fange ich am besten an wenn ich einen Trigger brauche, der aktiv wird wenn in der Tabelle "Objekt" in der Spalte "gesehen" der Wert auf "1" gesetzt wird. Dann soll diese ganze Zeile in eine neue Tabelle kopiert werden. Suche da jetzt noch pseudo code.

Eigentlich ganz einfach bestimmt aber als nicht informatiker bekomme ich es logisch nicht hin. Ich habe mir jetzt verschiedene Beispiele angeschaut aber es war nie das dabei was ich brauchte :(
 
Hi,

ich würde jetzt einfach mal sagen, das ist kein Problem, das Du mit einem Trigger lösen solltest, sondern direkt in der Anwendung...

Ich habe mir jetzt verschiedene Beispiele angeschaut aber es war nie das dabei was ich brauchte :(

Das könnte daran liegen, dass es kein Trigger-Event gibt, das nur feuert, wenn eine bestimmte Spalte geändert wird (geschweige denn einen bestimmten Wert zugewiesen bekommt...). D.h. Du müsstest einen UPDATE Trigger auf die Tabelle erstellen und in der Routine überprüfen, ob NEW.spalte = 1 ist. Dummerweise kannst Du das aber nur innerhalb des FOR EACH ROW, so dass bei jeder beliebigen Änderung der Tabelle alle Datensätze durchlaufen werden.

LG
 
Danke Klaus, google kann ich selbst benutzen und die Seiten hab ich natürlich gelesen.;)

Also in der Anwendung kann ich es wohl nicht lösen, ist ja nur php + mysql.

Vielleicht habe ich mich falsch ausgedrückt. Ob der Wert in der Spalte verändert wird oder ob gleich die ganze Zeile genommen wird zur Analyse ist mir egal.

Ob das jetzt für each row ist oder nicht, ist mir egal, Hauptsache es funktioniert.

Also muss ich das irgendwie mit old.Wert und new.Wert machen?
 
Wie fragt man denn sowas ab? Überall steht immer was anderes und ich sehe nicht durch:(

PHP:
CREATE TRIGGER test_after_update
AFTER UPDATE ON tbl_objects FOR EACH ROW
BEGIN
IF NEW.angesehen=1 THEN
INSERT   ?
END;

So würde meiner aussehen aber geht leider nicht.:confused::confused::confused:
Ich weiß nicht wie es weitergeht..
 
Zuletzt bearbeitet:
Hi,

So würde meiner aussehen aber geht leider nicht.:confused::confused::confused:

erstens ist "geht nicht" keine brauchbare Fehlerbeschreibung, zweitens musst Du doch nur mal ein wenig nachdenken:

- wie kommst Du darauf, dass es ein NEW.table_objects.angesehen gibt? Die Tabelle, auf die Du den Trigger erstellst, heißt doch tbl_objects. Außerdem spricht man die neuen Werte daraus einfach mit NEW.feldname an.
- Was sollen denn die Variablen da? Die sind doch komplett überflüssig.
- Was soll das für ein INSERT Statement sein? Wo hast Du denn die Syntax INSERT INTO tabelle1 tabelle2 gefunden?
- dann liest Du mal nach, wie die IF-Anweisung korrekt auszusehen hat.
- Schau Dir doch einfach mal das Beispiel im Handbuch an. Das musst Du doch nur ein bischen anpassen.

LG
 
Ich glaub deine Antwort bezieht sich noch bevor ich es geändert habe?
Hab es nochmal überarbeitet gehabt.
Da weiß ich jetzt bei insert nicht weiter. Ich will ja nur die ganze zeile in eine neue tabelle.
 
Zuletzt bearbeitet:
END IF muss es heißen...

Bei insert kenne ich nur wo values mit dabei steht. Aber da ich brauche ja die ganze Zeile.
Eher so "INSERT tbl_abgesage(NEW.tbl_objects)"
 

Neue Beiträge

Zurück