Announcement

Collapse
No announcement yet.

Trigger After Insert - Füllen von Zwischentabellen

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

  • Trigger After Insert - Füllen von Zwischentabellen

    Hallo!

    Ich habe eine mysql-Datenbank und greife darauf mit VB.NET zu.

    Ich möchte einen AFTER INSERT Trigger verwenden, um folgendes Problem zu lösen:

    1. Neuen Datensatz in Tabelle1 einfügen (hwid, hardwarename)
    2. Neuen Datnesatz in Tabelle 2 einfügen (swid, softwarename)
    3. hwid und swid in einer Zwischentabelle installation einfügen.

    Meine bisherige Lösung sieht folgendermaßen aus:

    Code:
    CREATE TRIGGER InsertInstallation AFTER INSERT ON hardware
    FOR EACH ROW
    DECLARE @hardwareID INT(10);
    SELECT @hardwareID = (SELECT hwid FROM INSERTED);
    INSERT INTO installation (hwid, swid)
    VALUES (@hardwareID, swid)
    Ich bekomme permanent einen Fehler in Zeile 2 (Höhe @hardwareID = (SELECT...)

    Frage: Ist dieses Problem so zu lösen oder würden sich Prozeduren besser eignen?

    Wenn es mit Triggern geht, wo liegt der Fehler in meiner Syntax?
    Wenn es mit Prozeduren besser gehen würde, wie wäre da das vorgehen?

    Hoffe auf schnelle Hilfe!!!

    Mit bestem Dank
    monik.

  • #2
    Hallo,
    Originally posted by monik. View Post
    ...Meine bisherige Lösung sieht folgendermaßen aus:
    Das sieht eher nach einer Lösung für MSSQL aber nicht nach MySQL aus. MySQL kennt weder ein DECLARE noch ein INSERTED.
    Am besten erstmal in der Syntax-Hilfe zu Triggern, Compound-Statement und Stored Programs schmöckern.

    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 Falk,

      danke für die Antwort.

      Das erklärt natürlich einiges, dass MySQL diese Befehle gar nicht kennt. Ich konnte es jetzt auf anderem Wege lösen:

      Code:
      query = "INSERT INTO installation (hwid,swid) " _
                      & "VALUES ((SELECT hwid FROM hardware WHERE hwid = (SELECT max(hwid) FROM hardware)), " _
                      & "(SELECT swid FROM software WHERE swname = '" & SoftwareName & "'))"
      Das mag zwar nicht die optimalste Lösung sein, funktioniert aber erstmal.

      Ich werd mich mit der Trigger-Geschichte später nochmal näher beschäftigen.
      Es kann sein, dass ich meine DB sowieso auf MSSQL umstellen muss, da wäre ja dann eine Lösung da

      Comment

      Working...
      X