Problem mit MySQL Trigger

VanHellsehn

Erfahrenes Mitglied
Hi,
Ich kenne mich mit MySQl triggern noch nicht so aus deshalb hier mal eine Frage:
Wie kann ich es machen das wenn ich in einer Spalte etwas auf 1 setzte (UPDATE) das er dann den vorherigen wert in eine andere Tabelle schreibt..
Ich habe immer nur Beispiele mit einem Insert gefunden..

Vielen dank für eure Hilfe im voraus..
Mit freundlichen Grüßen,
Marvvvv =)
 
Hab dazu nochmal ne frage und zwar weiß ich nicht wie ich es auf eine row in der Tabelle beziehen kann.
Ich habe eine Tabelle in der ich die Besucher des Tage speicher:
Code:
keyword    level      timestamp
day_visit    2        1236281333
Und da wird der Level auf 1 und ein aktueller Unix-Timestamp gesetzt wenn ein Besucher zum erstem mal an diesem Tag die Seite besucht..
Aber ich möchte die daten für eine Statistik behalten.. was jetzt ?


Edit:
Ich habe gerade versuch folgenden Code zu verwenden:
Code:
CREATE TRIGGER counter_backup BEFORE UPDATE ON counter_levels
  FOR EACH ROW BEGIN
    IF NEW.level = 1 THEN
        INSERT counter_backups (keyword, level, timestamp) VALUES (OLD.keyword, OLD.level, OLD.timestamp); 
    END IF;
  END;
Dabei kam folgender Fehler bei rum.
Ist level für irgendetwas reserviert?
Code:
#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 'INSERT counter_backups (keyword, level, timestamp) VALUES (OLD.keyword, OLD.leve' at line 4
 
Zuletzt bearbeitet:
Hi,

der Trigger ist okay. Probleme macht wahrscheinlich der Delimiter.
Versuch den mal vorher in ein anderes Zeichen zu ändern und später wieder rückwärts:
Code:
DELIMITER |

CREATE TRIGGER counter_backup_bu
  BEFORE UPDATE ON counter_levels
  FOR EACH ROW BEGIN
    IF NEW.level = 1 THEN
        INSERT counter_backups (keyword, level, timestamp) VALUES (OLD.keyword, OLD.level, OLD.timestamp); 
    END IF;
  END;
|

DELIMITER ;

Guck dir das am Besten noch einmal auf dieser Seite an (einfach nach "delimiter" suchen). Dort gibts Beispiele.

Gruß
 
Ich arbeite mit phpMyAdmin.
Ich habe immer gedacht da muss man diesen nicht setzten..
Wenn ich es wie in deinem Beispiel mache kommt wieder ein fehler bei rum der durch den Delmiter verursacht wurde:
Code:
#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 'DELIMITER |

CREATE TRIGGER trigger_counter_backup
  BEFORE UPDATE ON counter' at line 1
 
Zurück