Pomelo.entityframeworkcore.mysql: Comment utiliser DELIMITER dans les instructions SQL brutes

Créé le 4 sept. 2019  ·  3Commentaires  ·  Source: PomeloFoundation/Pomelo.EntityFrameworkCore.MySql

Je veux créer un déclencheur utiliser sql brut (ce sql comme)

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 ;

Exécuté dans mariadb ne pose aucun problème, mais la requête SQL brute utilisant le noyau EF signalera une erreur DELIMITER, comme suit

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

utiliser DELIMITER $$; comme la même erreur

Alors, comment exécuter du SQL brut avec DELIMITER ,ou quelles alternatives ?

S'il vous plaît (merci)

closed-question type-question

Tous les 3 commentaires

DELIMITER $$ est pour MySQL Workbench. Dans le code C#, créez simplement un MySqlCommand avec le texte complet de la commande et exécutez-le :

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 $$ est pour MySQL Workbench. Dans le code C#, créez simplement un MySqlCommand avec le texte complet de la commande et exécutez-le :

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();
}

Merci, c'est très utile pour moi

Cette page vous a été utile?
0 / 5 - 0 notes