通过C API更改MySQL查询分隔符

Tho*_*ini 1 c mysql

如何使用C API更改MySQL查询分隔符?我试着发送DELIMITER |一个查询,抱怨..the right syntax to use near 'delimiter' at line 1...

也试过DELIMITER |;,没有运气.试过DELIMITER |; SELECT 1|,没有运气.:(

我问的原因是我需要通过C API创建一个触发器,如下所示:

create trigger increase_count after insert on torrent_clients for each row
begin
   IF NEW.BytesLeft = 0 THEN
      UPDATE torrents SET Seeders = Seeders + 1 WHERE torrents.InfoHash = NEW.InfoHash;
   ELSE
      UPDATE torrents SET Leechers = Leechers + 1 WHERE torrents.InfoHash = NEW.InfoHash;
   END IF;
end|
Run Code Online (Sandbox Code Playgroud)

但我不认为有一种方法可以在不更改分隔符的情况下完成,是吗?

谢谢!


编辑:请注意,我确实需要在最后显式编写分隔符,因为我只运行一个API调用运行多个查询(我有多个语句)


EDIT2:使用C api的mysqlclient这样做,所以一定有办法..

ax.*_*ax. 7

只有在使用mysql客户端程序时才需要更改分隔符(因为它将mysql分号解释为语句分隔符).使用C API时无需更改分隔符:

通常,您只能使用一个SQL命令执行mysql_query().只有在语法允许的情况下,分号才会出现在这样的命令中,而通常情况并非如此!特别是,SQL不允许命令以分号结尾.(如果您尝试这样做,C API将引发错误.)

的命令CREATE PROCEDURE,CREATE FUNCTION,CREATE TRIGGER,等是例外,当他们定义了存储过程或触发器:在这样的命令分号用作属于存储过程或触发器的一部分的SQL的指令之间的隔板.这些命令可以毫无问题地执行.

PS您可能应该再次关闭多个语句.