如何使用can更改MySQL查询分隔符?我试着发送DELIMITER |作为查询,抱怨..the right syntax to use near 'delimiter' at line 1。
我也试过DELIMITER |;,没有运气。试过DELIMITER |; SELECT 1|,没有运气。:(
我问这个问题的原因是,我需要通过C创建一个触发器,如下所示:
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会这样做,所以必须有一种方法。
发布于 2010-01-25 14:35:31
只有在使用mysql客户端程序时才需要更改分隔符(因为将分号作为语句分隔符的是mysql )。使用C时不需要更改分隔符
通常,您只能使用
mysql_query()执行一个SQL命令。分号只有在语法允许的情况下才能出现在这样的命令中,而通常情况并非如此!特别是,SQL不允许命令以分号结尾。(如果尝试这样做,C API将引发错误。) 在定义存储过程或触发器时,命令CREATE PROCEDURE、CREATE FUNCTION、CREATE TRIGGER等都是异常:在这些命令中,分号充当存储过程或触发器的一部分的SQL指令之间的分隔符。这样的命令可以毫无问题地执行。
P.S.你也许应该让多语句再来一次。
发布于 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");
发布于 2010-01-21 15:12:59
你试过了吗
DELIMITER //最后没有";“?在包含多个查询的查询中更改分隔符可能是不可能的。
https://stackoverflow.com/questions/2109366
复制相似问题