有关主键字段ID编号设计及程序实现

来源:百度知道 编辑:UC知道 时间:2024/06/07 12:31:11
正在做一个工单系统,对于主键ID字段的使用一直没有拿定主意。以前对于ID字段,一般都是用Int或bigint类型,然后使用标识的方式由系统自增长。这种方式最简单,但在后期应用中有很多麻烦之处,没有采用自定义编号的方式方便, 但如果是采用主键ID为字符型的自定义编号方式的话,也会带来很多问题,对我来说特别是并发冲突问题。
很想得到这有关主键字段ID编号设计及程序实现的帮助,希望大家给点意见或经验之谈,要是有详细的设计方案和程序代码就更好了。
对了我用的是SQL2000或2005,程序是VB的,要是有VB的代码就更好了。
先上50分,要是对我特有帮助的话再加100分。
谢谢一楼的回答,在SQL中处理有一个问题,如何返回刚添加记录的ID编号给程序,在程序中有很多添加记录后要求马上返回ID编号的应用,我用的是VB,麻烦再指点一下。

你可以用组合的方式来设置id,比如说,我设置一个插入时间的字段 ...
然后另外设置一个组合,通过触发器 来设置id ...
可以前面几位设置为天
091010这是日期 ID ,然后后面 5位 (可以自己设置为几位 ),然后另外设置个索引(identity),但是不当id 使用...

触发器可以这么写,根据插入的日期来设置写入的id ,我只写关键语句的算法.
(插入后触发器)
第一,插入时,获取到插入的日期.就是当前天.

declare @var varchar(10),@maxid int
set @var=convert(varchar(10),getdate(),12)
select @maxid=max(cast(substring(id,7,len(id)) as int ))
from 表名 where substring(id,1,6)=@var
上面就把今天的最大id查出来了,最后再根据触发器里的 临时表 inserted
里的索引来设置真正的id ..
然后我们就可以对id进行查了

可以这样啊,获取 @@identity 这个全局变量,我们不是定义了索引了吗? 然后这个就是获取到最后修改的索引.然后再根据这个索引就可以查询出数据了
select @@identity as iden --最后插入记录的索引
相当于一个表中的字段了.然后就可以获取
select ID from table where index=@@identity --获取最后插入的id

这个是我的群
http://im.baidu.com/ginvite/gi/url_confirm.php?i