多线程生成数据库的主键,怎么保证他的唯一性

谁有好的思路? 多个线程并发的往数据库里插入数据,怎么保证主键不重复? 数据库主键自增就不考虑了?因为生成的主键是有一定格式的,不是简单的+1,有好的思路或办法的告诉我下。
格式为日期加4为数字,比如201106100001

1、可考虑将获取主键那个方法设置成同步的方式,所有的线程都需要同步获取主键。
2、负责主键的类一次生成100个主键(根据需要自己设定),放到一个Queue里,一个线程拿走一个就从Queue里移除一个,同时生成新的主键放入到Queue里。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-10
可以尝试数据库触发器来处理.
下面有具体的例子的实现方式,仅供参考。

Oracle 数据库
http://hi.baidu.com/wangzhiqing999/blog/item/75710d1254a30a49f3de3285.html

SQL Server 2005 数据库
http://hi.baidu.com/wangzhiqing999/blog/item/31e82905f271fd15728da503.html

SQL Server 2000数据库
http://hi.baidu.com/wangzhiqing999/blog/item/e0df59eef9271dc4d439c914.html
第2个回答  2011-06-10
在后四位上给线程分区,每个线程负责一个特定的区间的ID.
比如0000-0999
如果不用这个办法,就只有用同步的方法了.
第3个回答  2011-06-10
数据库系统会处理好并发的。
只要你上层控制好。
第4个回答  2011-06-10
我也是打酱油的!因为真没思路!
不过给你提个建议,你还是把主键格式拿出来啊,要不然让人怎么想思路啊
相似回答