أريد إنشاء مشغل باستخدام خام 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 core سيبلغ عن خطأ 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 raw باستخدام 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(); }
شكرا لك ، هذا مفيد جدا بالنسبة لي。 非常 感谢!