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

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ €์—๊ฒŒ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹คใ€‚ ้žๅธธ ๆ„Ÿ่ฐข๏ผ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰