Announcement

Collapse
No announcement yet.

Trigger mit SELECT-Unterabfrage

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

  • Trigger mit SELECT-Unterabfrage

    Hallo,

    ich hoffe ihr könnt mir weiterhelfen, kann mir diesen Sachverhalt nicht erklären. Habe folgenden Trigger definiert:
    Code:
    CREATE TRIGGER delete_paket AFTER DELETE
    ON paket FOR EACH ROW
    UPDATE paketinhalt SET paketinhalt.restmenge=paketinhalt.restmenge+OLD.restmenge 
    WHERE paketinhalt.wid IN (SELECT wid FROM pakete_inhalt WHERE pakete_inhalt.pid=OLD.pid);
    Das ganze funktioniert bis auf das OLD.pid in der SELECT Unterabfrage. D.h. das OLD.restmenge wird erkannt, aber nicht das OLD.pid in der Unterabfrage.
    Danke für eure Antworten
    Zuletzt editiert von sqler; 22.08.2011, 02:27.

  • #2
    Hallo,

    gibt es denn eine Spalte pid in der Tabelle paket ?

    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


    • #3
      Hallo,

      ja gibt es. Ich habe inzwischen herausgefunden, dass es wohl daran liegt, dass in Triggern überhaupt keine SELECT-Statements ( außer bei SET variable=(SELECT.....) ) erlaubt sind. Das wäre dann auch der neue Ansatz. Jetzt ist nur die Frage ob ich ein folgendes Konstrukt einer Variblen zuweisen kann: (8,4,3).Sodass ich den Trigger so formulieren kann:

      Code:
      delimiter//
      CREATE TRIGGER delete_paket AFTER DELETE
      ON paket FOR EACH ROW
      BEGIN
      SET wids=(SELECT wid FROM pakete_inhalt WHERE pakete_inhalt.pid=OLD.pid) 
      // hier muss der Variablen abhängig von der Abfrage ein Konstrukt wie (5,7,8) zugewiesen werden. Die Abfrage hat also mehrere Ergebnisse
      
      UPDATE paketinhalt SET paketinhalt.restmenge=paketinhalt.restmenge+OLD.restmenge 
      WHERE paketinhalt.wid IN (wids);
      
      END
      delimiter ;
      Viele Grüße

      Comment


      • #4
        Originally posted by sqler View Post
        ...Jetzt ist nur die Frage ob ich ein folgendes Konstrukt einer Variblen zuweisen kann: (8,4,3).Sodass ich den Trigger so formulieren kann:
        Nein!

        Select-Statements mit einer INTO <var_list> Klausel, bzw. innerhalb einer Subquery sollten innerhalb eines Triggers möglich sein. Lediglich der Zugriff auf Tabellen, die von der aktuellen Änderung betroffen sind, ist nicht möglich.

        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