57,062
社区成员
发帖
与我相关
我的任务
分享
首先 ,AUTO_INCREMENT的最小值是1,你设置成零也没有用 。
还有 ,你 的终端 编码不对,所以导致这样的结果。
看我的例子:
CREATE TABLE `c` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(200) NOT NULL,
`count` int(11) NOT NULL default '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`ck`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ck`(IN cate VARCHAR(200))
BEGIN
DECLARE count INT;
SELECT COUNT(*) INTO count FROM `c` WHERE `title`=cate;
SELECT count;
IF count <1 THEN
INSERT INTO `c` (`title`) VALUES(cate);
ELSE
UPDATE `c` SET `count`=`count`+1 WHERE `title`=cate;
END IF;
END$$
DELIMITER ;
第一次调用 :
set names gbk;
call ck('我晕');
select * from c;
query result(1 records)
id title count
1 我晕 1
第二次调用:
set names gbk;
call ck('我晕');
select * from c;
query result(1 records)
id title count
1 我晕 2