六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 40|回复: 0

mysql 序列号生成器

[复制链接]

升级  40%

30

主题

30

主题

30

主题

秀才

Rank: 2

积分
110
 楼主| 发表于 2013-2-7 15:40:42 | 显示全部楼层 |阅读模式
      如果你不想使用mysql的自动递增,但又想实现主键序列号的功能,可以使用下面的方法,通过函数用一张表去维护生成多个表的序列号,简单又实用
     
1.创建生成多个表的序列号的数据维护表
CREATE TABLE seq (
  name varchar(20) NOT NULL,
  val int(10) UNSIGNED NOT NULL,
  PRIMARY KEY  (name)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8
 
2.插入几条初始化数据
INSERT INTO seq VALUES('one',100);
INSERT INTO seq VALUES('two',1000);
 
3.创建函数以生成序列号
CREATE FUNCTION seq(seq_name char (20)) returns int
begin
 UPDATE seq SET val=last_insert_id(val+1) WHERE name=seq_name;
 RETURN last_insert_id();
end
 
4.测试
<ol><li style="font-weight: normal; color: #3a6a8b; font-style: normal; font-family: 'Courier New', Courier, monospace;"><div style="font-weight: normal; font-family: 'Courier New', Courier, monospace;">mysql> SELECT seq('one'),seq('two'),seq('one'),seq('one');
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表