Announcement

Collapse
No announcement yet.

MySql Create Trigger unter VB.Net

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

  • MySql Create Trigger unter VB.Net

    Hallo,
    hab ein Problem, in einer MySql-Tabelle einen Trigger im VisualStudio 2008 zu erstellen.
    Hab das Statement in einer Datei "create.sql" gespeichert:

    DELIMITER ;;
    CREATE TRIGGER `record_delete` AFTER DELETE ON `t131` FOR EACH ROW BEGIN
    DELETE FROM t500 WHERE T500_ID131=OLD.T131_LNK;
    DELETE FROM t144 WHERE T144_ID=OLD.T131_LNK;
    DELETE FROM t141 WHERE T141_ID=OLD.T131_LNK;
    END ;;
    DELIMITER ;

    Wenn ich diesen Text im Navicat als Abfrage ausführen lasse, klappt es. Auch wenn ich "Script ausführen" durchführe.
    In VB.Net hab ich folgenden Code:

    Code:
    Private Function CreateNewTrigger(ByVal cn() As String) As Boolean         
            Try
                Dim reader As New System.IO.StreamReader("c:\temp\create.sql")
                Dim s As String = reader.ReadToEnd
                reader.Close()
                OpenConnection(cn)
                cmd = New MySqlCommand(s, _conn)
                cmd.ExecuteNonQuery()
            Catch ex As Exception
                Return False
            End Try
            Return True
    End Function
    Ich bekomme in ex einen SQL Syntax-Error. Ich habe den Reader schon mit verschiedenen Encodings getestet, alles ohne Erfolg. Beschäftigt mich jetzt schon seit heute morgen Weiss jemand Rat?
    Danke. Gruß Norbert

  • #2
    Gelöst

    Man muss das DELIMITER weglassen.
    So geht es:

    CREATE TRIGGER `record_delete` AFTER DELETE ON `t131` FOR EACH ROW BEGIN
    DELETE FROM t500 WHERE T500_ID131=OLD.T131_LNK;
    DELETE FROM t144 WHERE T144_ID=OLD.T131_LNK;
    DELETE FROM t141 WHERE T141_ID=OLD.T131_LNK;
    END

    Comment

    Working...
    X