提交 05b1ac74 authored 作者: Leon de Rooij's avatar Leon de Rooij

trying to get ini_id's autoincremented count in mysql transaction

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk/contrib@15295 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 86328bea
CREATE TABLE IF NOT EXISTS `pcli` (
`ini_id` varchar(255) NOT NULL,
`count` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
#### FUNCTIONS CAN'T SUPPORT TRANSACTIONS ?!
DROP FUNCTION IF EXISTS test;
delimiter $$
CREATE FUNCTION test(i VARCHAR(255)) RETURNS INT
BEGIN
declare c int;
SELECT `count` INTO c FROM `pcli` WHERE `ini_id` = i;
IF (c >= 0) THEN
SET c = c + 1;
UPDATE `pcli` SET `count` = c WHERE `ini_id` = i;
ELSE
SET c = 0;
INSERT INTO `pcli` (`ini_id`, `count`) VALUES (i, c);
END IF;
return c;
END $$
delimiter ;
DROP PROCEDURE IF EXISTS test;
delimiter $$
CREATE PROCEDURE test(i VARCHAR(255), OUT c INT)
BEGIN
SELECT `count` INTO c FROM `pcli` WHERE `ini_id` = i;
IF (c >= 0) THEN
SET c = c + 1;
UPDATE `pcli` SET `count` = c WHERE `ini_id` = i;
ELSE
SET c = 0;
INSERT INTO `pcli` (`ini_id`, `count`) VALUES (i, c);
END IF;
END $$
delimiter ;
DROP FUNCTION IF EXISTS test;
delimiter $$
CREATE FUNCTION test(i VARCHAR(255)) RETURNS INT
BEGIN
declare c int;
CALL test(i, @c);
SELECT (@c) into c;
return c;
END $$
delimiter $$
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论