Pomelo.entityframeworkcore.mysql: So verwenden Sie DELIMITER in Raw-SQL-Anweisungen

Erstellt am 4. Sept. 2019  ·  3Kommentare  ·  Quelle: PomeloFoundation/Pomelo.EntityFrameworkCore.MySql

Ich möchte einen Trigger erstellen, benutze raw sql, this sql as:

DELIMITER $$   
CREATE OR REPLACE TRIGGER platformdb.trig_updatevehiclekilometer
    AFTER UPDATE ON platformdb.VehicleTravels FOR EACH ROW 
    BEGIN
        UPDATE Vehicles SET TotalKilometers=new.Kilometers WHERE ID=new.VehicleId;
    END$$
DELIMITER ;

Die Ausführung in mariadb ist kein Problem, aber die rohe SQL-Abfrage mit EF-Kern meldet einen DELIMITER-Fehler wie folgt error

MySql.Data.MySqlClient.MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DELIMITER $$ CREATE OR REPLACE TRIGGER platformdb.trig_updatevehiclekilometer  A' at line 1 ---> MySql.Data.MySqlClient.MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DELIMITER $$ CREATE OR REPLACE TRIGGER platformdb.trig_updatevehiclekilometer  A' at line 1

Verwenden Sie DELIMITER $$; als gleichen Fehler

Also, wie führt man Raw-SQL mit DELIMITER oder welche Alternativen?

Bitte danke!

closed-question type-question

Alle 3 Kommentare

DELIMITER $$ ist für MySQL Workbench. Erstellen Sie in C#-Code einfach ein MySqlCommand mit dem vollständigen Befehlstext und führen Sie es aus:

using (var command = new MySqlCommand(@"CREATE OR REPLACE TRIGGER platformdb.trig_updatevehiclekilometer
    AFTER UPDATE ON platformdb.VehicleTravels FOR EACH ROW 
    BEGIN
        UPDATE Vehicles SET TotalKilometers=new.Kilometers WHERE ID=new.VehicleId;
    END", connection))
{
    command.ExecuteNonQuery();
}

DELIMITER $$ ist für MySQL Workbench. Erstellen Sie in C#-Code einfach ein MySqlCommand mit dem vollständigen Befehlstext und führen Sie es aus:

using (var command = new MySqlCommand(@"CREATE OR REPLACE TRIGGER platformdb.trig_updatevehiclekilometer
    AFTER UPDATE ON platformdb.VehicleTravels FOR EACH ROW 
    BEGIN
        UPDATE Vehicles SET TotalKilometers=new.Kilometers WHERE ID=new.VehicleId;
    END", connection))
{
    command.ExecuteNonQuery();
}

Danke, das ist sehr nützlich für mich。非常感谢!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen