Pomelo.entityframeworkcore.mysql: 生の SQL ステートメントで DELIMITER を使用する方法

作成日 2019年09月04日  ·  3コメント  ·  ソース: PomeloFoundation/Pomelo.EntityFrameworkCore.MySql

生のSQLを使用してトリガーを作成したい,このSQLは:

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 ;

mariadb で実行しても問題はありませんが、EF コアを使用した生の SQL クエリは次のように DELIMITER エラーを報告します。

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

同じエラーとしてDELIMITER $$;を使用します

それでは、 DELIMITERで生の SQL を実行するにはどうすればよいでしょうか。

よろしくお願いします!

closed-question type-question

全てのコメント3件

DELIMITER $$は MySQL Workbench 用です。 C# コードでは、完全なコマンド テキストでMySqlCommandを作成して実行するだけです。

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 $$は MySQL Workbench 用です。 C# コードでは、完全なコマンド テキストでMySqlCommandを作成して実行するだけです。

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

ありがとう、これは私にとって非常に便利です。非常感<0xE8><0xB0><0xB0>アザッ!

このページは役に立ちましたか?
0 / 5 - 0 評価