Announcement

Collapse
No announcement yet.

Problem mit einem Trigger

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

  • Problem mit einem Trigger

    Hallo Zusammen,

    ich habe aktuell ein kleines Problem mit einem Trigger.

    Hier mal mein Trigger:

    Code:
    BEGIN
    
    IF((SELECT `Wert` FROM parameter_history WHERE `BusNr` = NEW.BusNr AND `MesswertNr` = NEW.MesswertNr ORDER BY `Timestamp` DESC LIMIT 1) != NEW.Wert)
    THEN
      INSERT INTO parameter_history (`BusNr`, `MesswertNr`, `Wert`) VALUES (NEW.BusNr, NEW.MesswertNr, NEW.Wert);
    END IF;
    
    END
    Und zwar habe ich 2 Tabellen - wenn in die eine Tabelle etwas eingetragen wird, wird nachdem Event "After Insert" der Trigger ausgelöst (parallel dazu habe ich noch einen 2 Trigger der nach dem Event "After Update" ausgelöst wird).
    Eigentlich funktioniert es relativ gut - allerdings nur wenn schon ein Datensatz in der Tabelle "parameter_history" eingetragen ist. Wenn ein "neuer" Datensatz eingefügt werden soll funktioniert das einfach nicht.
    Ich vermute mal, dass ich da eine etwas andere SELECT-Abfrage brauche - nur weiß ich einfach nicht wie.
    Wie gesagt, wenn schon ein Datensatz vorhanden ist - funktioniert das ganze Prima - allerdings bei einem neuen tut sich nichts da mein Select ja auch nichts zurückgeben kann - und das müsste ich, denke ich, abfangen -> das weiß ich aber nicht wie ich das machen soll...

    hoffe ihr könnt mir weiterhelfen!

    lg

  • #2
    Hallo,

    das SELECT in deiner IF-Bedingung liefert für den Fall das kein DS vorhanden ist ein NULL! Und NULL hat die Eigenart mit nichts vergleichbar zu sein. Ein direkter Vergleich mit NULL is also IMMER False!
    Besser wäre es also die SELECT-INTO-Syntax zu wählen und dann zusätzlich den Wert mit IS NULL zu überprüfen.
    [highlight=sql]
    begin
    declare hist_wert <datentyp>;
    SELECT Wert INTO hist_wert
    FROM parameter_history
    WHERE ...

    if ((hist_wert IS NULL) OR (hist_wert != NEW.Wert)) then
    ...

    [/highlight]

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment

    Working...
    X