首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

mysql 序列号生成器(转)

作者:  时间: 2011-05-20

如果你不想使用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.测试

  1. mysql> SELECT seq('one'),seq('two'),seq('one'),seq('one');
  2. +------------+------------+------------+------------+
  3. | seq('one') | seq('two') | seq('one') | seq('one') |
  4. +------------+------------+------------+------------+
  5. |        102 |       1002 |        103 |        104 |
  6. +------------+------------+------------+------------+
  7. 1 row IN SET (0.00 sec)

作者: 牛司朋 发表于 2011-05-20 20:07 原文链接

评论: 0 查看评论 发表评论


最新新闻:
· 谷歌社交搜索服务目前支持19种语言(2011-05-20 20:05)
· 英特尔称ARM版Windows 8存在兼容性问题,微软反驳(2011-05-20 20:03)
· 索尼泰国网站又遭黑客攻击(2011-05-20 19:57)
· 微软创始人比尔-盖茨:PC就是平板电脑(2011-05-20 19:56)
· 谷歌停止“新闻档案”项目 已扫描6000万页面(2011-05-20 17:45)

编辑推荐:码斗士的修炼之路 -- 如何保持并提升战斗力

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库