Я хочу создать триггер, использующий необработанный 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 не проблема, но необработанный запрос sql с использованием ядра EF сообщит об ошибке 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 $$;
как ту же ошибку
Итак, как выполнить необработанный sql с помощью DELIMITER
, или какие альтернативы?
Пожалуйста спасибо!
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(); }
Спасибо, это мне очень пригодилось。 非常 感谢!