首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过C更改MySQL查询分隔符

问通过C更改MySQL查询分隔符
EN

Stack Overflow用户
提问于 2010-01-21 13:09:22
回答 3查看 1.9K关注 0票数 2

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

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

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

代码语言:javascript
复制
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|

但我认为没有办法做到这一点而不改变分隔符,是吗?

谢谢!

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

EDIT2:使用C的mysqlclient会这样做,所以必须有一种方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-25 14:35:31

只有在使用mysql客户端程序时才需要更改分隔符(因为将分号作为语句分隔符的是mysql )。使用C时不需要更改分隔符

通常,您只能使用mysql_query()执行一个SQL命令。分号只有在语法允许的情况下才能出现在这样的命令中,而通常情况并非如此!特别是,SQL不允许命令以分号结尾。(如果尝试这样做,C API将引发错误。) 在定义存储过程或触发器时,命令CREATE PROCEDURE、CREATE FUNCTION、CREATE TRIGGER等都是异常:在这些命令中,分号充当存储过程或触发器的一部分的SQL指令之间的分隔符。这样的命令可以毫无问题地执行。

P.S.你也许应该让多语句再来一次。

票数 8
EN

Stack Overflow用户

发布于 2010-08-12 16:38:19

您可以使用mysql_query执行多个命令。但是,在建立连接时,您必须设置一些参数。例如,无符号的长opt_flags = CLIENT_FOUND_ROWS \ CLIENT_MULTI_STATEMENTS = CLIENT_MULTI_RESULTS;

(0 == mysql_real_connect(mConn,mHostName,mUserName,mUserPass,mDbName,mPort,0,opt_flags))

/*执行多条语句*/ status = mysql_query(mysql ),“删除表如果存在test_table;\创建表test_table(id INT);\ INSERT到test_table值(10);\ UPDATE test_table SET id=20 id=10;\ SELECT * FROM test_table;滴表test_table");

票数 0
EN

Stack Overflow用户

发布于 2010-01-21 15:12:59

你试过了吗

代码语言:javascript
复制
DELIMITER //

最后没有";“?在包含多个查询的查询中更改分隔符可能是不可能的。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2109366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档