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!
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 einMySqlCommand
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。非常感谢!