posts - 15,comments - 21,trackbacks - 0
Mysql中除了使用auto_increment字段作为自增序号以外 还有另外一种办法 可以提供唯一序列号并且可以由一张表完成对多个序列
要求的满足。
大致如下:
1.创建一个简单表 
   create table SeqTab
   ( iSeqNo int not null default 0,
     iSeqType int not null default 0);
2.插入一调记录
   insert into SeqTab values(0,13);  // 0表示SeqNo初始值,13为SeqType,同一张表可对多个应用提供Seq序列服务
3.不管多进程 or 单进程对SeqTab表同时进行访问,使用一下方法获取序列号
   1st->update SeqTab set iSeqNo=last_insert_id(iSeqNo+1) where iSeqType=13;
   2nd->select last_insert_id();
4.因多进程对SeqTab同时访问,进行update SeqTab set iSeqNo=last_insert_id(iSeqNo+1);时,数据库保证了update的事务
完整性,且last_insert_id()是与当前mysql连接相关的,所以多进程同时使用时,也不会冲突。

posted on 2012-12-05 11:54 梨树阳光 阅读(1680) 评论(2)  编辑 收藏 引用 所属分类: 数据库

FeedBack:
# re: 大区中分配玩家唯一ID的办法
2012-12-06 13:03 | xx
为什么不用guid?  回复  更多评论
  
# re: 大区中分配玩家唯一ID的办法
2012-12-06 14:25 | 梨树阳光
@xx
字符的比较时间始终比数字长  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理