id编码的问题

demogorgon 2002-08-29 12:43:09
数据库表有自增的字段,但是我希望可以定义一定格式的编码(字符串,或数字的),在插入的时候怎么保证这个字段是唯一的(同时插入时不冲突)
...全文
51 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zerg2001 2002-08-30
  • 打赏
  • 举报
回复
你可以这样子来搞定这个问题:

1 在表中添一个自增长字段,这个字段的起始值和步长都是可设置的;

2 你先将[自编的ID]字段置空,将新增的记录Update,这时自增长字段
就有一个唯一值了,你再根据这个唯一值来派生出你的[自编的ID],
填充回去;

3 这样子生成的[自编的ID]在第二次Update后虽然是唯一值,但在第一
次Update时,没有办法取到唯一值,所以不能作为主键字段。

还有缺陷,思考中。。。。。。。。。。。。。。。。。。

demogorgon 2002-08-30
  • 打赏
  • 举报
回复
to zerg2001(刺蛇):
网络传输有延时,如果两个人同时进行操作,可能的到相同的maxid,这时候做插入就可能冲突阿

to mudong(木东):
你的做法我没太看明白,表中存的是当前id个数吗?每增加一个id 就
增加id数量? 但是这样还是不能防止冲突阿,如果两个人同时都在这个表里查出相同的数量值怎么办?

难道数据库中没有好的解决办法吗?
mudong 2002-08-29
  • 打赏
  • 举报
回复
我认为可以用一张表来纪录id的使用情况
比如

AJ BK CW
33 1024 334

下一个ID是AJ0035、或者CW0335
zerg2001 2002-08-29
  • 打赏
  • 举报
回复
如果该编码是数字的话,就取最大值再加1就可以和自增长字段有
相类似的效果:

Dim Rs =Db.execute("select max(Id) as IdMax from table1")
Dim IdNew as integer
IdNew=Rs.IdMax+1
'IdNew就是新的关键字

如果是字符串,只要把IdNew改成字符串型,再根据你的编码规则
产生新的ID,具体方法用字符串函数搞定吧。





34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧