社区
MS-SQL Server
帖子详情
id编码的问题
demogorgon
2002-08-29 12:43:09
数据库表有自增的字段,但是我希望可以定义一定格式的编码(字符串,或数字的),在插入的时候怎么保证这个字段是唯一的(同时插入时不冲突)
...全文
51
4
打赏
收藏
id编码的问题
数据库表有自增的字段,但是我希望可以定义一定格式的编码(字符串,或数字的),在插入的时候怎么保证这个字段是唯一的(同时插入时不冲突)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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,具体方法用字符串函数搞定吧。
MS-SQL Server
34,590
社区成员
254,589
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章