设为首页 加入收藏

TOP

MYSQL类ORACLE序列实现遇到的问题
2014-11-24 03:26:08 来源: 作者: 【 】 浏览:1
Tags:MYSQL ORACLE 序列 实现 遇到 问题
MYSQL类ORACLE序列实现遇到的问题
MYSQL实现ORACLE的nextval方式
新建函数,如下:
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `nextval`(seq_name varchar(100)) RETURNS bigint(20)
BEGIN
DECLARE cur_val bigint(20);
SELECT cur_value INTO cur_val FROM sequence WHERE name = seq_name;
IF cur_val IS NOT NULL THEN
UPDATE
sequence
SET cur_value = cur_value + increment
WHERE name = seq_name;
END IF;
RETURN cur_val;
END
新建表sequence
CREATE TABLE `sequence` (
`name` varchar(100) NOT NULL,
`increment` int(11) unsigned NOT NULL DEFAULT '1',
`cur_value` bigint(20) unsigned DEFAULT '1',
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
应用使用SSI,通过 select nextval('SEQ') 获得序列值。
遇到的问题:当select nextval('A') 后,再在另外的功能点中使用select nextval('B') 时,提示无column nextval('A'),抛出SQL异常。开始没搞明白,百度&谷歌都出动了。后来细想了下,应该是第2次的时候nextval('A')被当成了别名。故在ibatis的SQL配置中稍作修改select nextval('A') as x,就OK了。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MySQL分组排序取前N条记录以及生.. 下一篇MSSqlServer伪序列

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·用 C 语言或者限制使 (2025-12-25 08:50:05)
·C++构造shared_ptr为 (2025-12-25 08:50:01)
·既然引用计数在做 GC (2025-12-25 08:49:59)
·Java 编程和 c 语言 (2025-12-25 08:19:48)
·. net内存管理宝典这 (2025-12-25 08:19:46)