如何使用 C API 更改 MySQL 查询分隔符?我尝试发送DELIMITER |
作为查询、投诉..the right syntax to use near 'delimiter' at line 1
..
Tried 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|
但我认为没有办法在不改变分隔符的情况下做到这一点,是吗?
Thanks!
编辑:请注意,我确实需要在末尾显式写入分隔符,因为我仅使用一个 API 调用运行多个查询(我有多个语句)
EDIT2:使用 C api 的 mysqlclient 会执行此操作,因此必须有一种方法..
仅当使用时才需要更改分隔符mysql
客户端程序(因为它是mysql
将分号解释为语句分隔符)。:
通常,您只能执行一条 SQL 命令mysql_query() http://dev.mysql.com/doc/refman/5.1/en/mysql-query.html。只有在语法允许的情况下,分号才能出现在这样的命令中,但通常情况并非如此!特别是,SQL 不允许命令以分号结尾。 (如果您尝试这样做,C API 将引发错误。)
命令CREATE PROCEDURE
, CREATE FUNCTION
, CREATE TRIGGER
、等在定义存储过程或触发器时属于例外情况:在此类命令中,分号充当作为存储过程或触发器一部分的 SQL 指令之间的分隔符。这样的命令可以毫无问题地执行。
附:你可能应该设置多语句 http://dev.mysql.com/doc/refman/5.1/en/c-api-multiple-queries.html再次关闭。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)