起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 196|回复: 8

【结贴】获取了重复的自动编码,怎么回事?**

[复制链接]
发表于 2007-8-30 15:46:22 | 显示全部楼层 |阅读模式
有30个人用户在用同一个功能,偶尔保存时会出现ID违反唯一约束,出现问题时我用对象查看器,看到的ID实际上数据库已经有了,属于另一个人录入的,请问为什么会出现这种情况?谢谢!
回复

使用道具 举报

发表于 2007-8-30 17:31:31 | 显示全部楼层
您的id是怎么获得的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-30 17:39:21 | 显示全部楼层
参数,类似于GUID的那种,客户端新增的时候会自动填充
回复 支持 反对

使用道具 举报

发表于 2007-8-30 17:52:50 | 显示全部楼层
如果是newguid,应该很难重复的。您的算法是什么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-6 09:17:09 | 显示全部楼层
就是一个自动参数
procedure TPUB_PARA.ParamSALES_RECORD_SNGetValue(Sender: TObject; var Value: Variant);
begin
    Value := TCommonUtils.GetAutoIncreaseID(Self.Context,
    TBizParam(Sender).ID, TBizParam(Sender).DisplayName);
  { 可根据需要定制Value的格式 }
  Value := 'SR'+ TCommonUtils.StrToRightLenStr(Variants.VarToStr(Value), '0', 10);
end;
回复 支持 反对

使用道具 举报

发表于 2007-9-6 14:01:46 | 显示全部楼层
TCommonUtils.GetAutoIncreaseID 由于没有使用事务封装,这个方法有可能读到脏数据。
楼主可以参考业务模型\协同系统\工作事务(处理功能)\业务基础信息
中的function TBIZBASEINFO.GetNewAutoIncNumber(AConnection: TConnection): Integer;方法来避免读到脏数据。
本来业务空间下的内容是给用户参考的,我们并不推荐使用。
不过,现在看来很多用户都在使用,我已经作为缺陷提交,请我们的平台组重新整理一下这些函数,使他们的使用能够更加安全。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-8 12:04:31 | 显示全部楼层
多谢,我试试。
回复 支持 反对

使用道具 举报

发表于 2007-9-8 12:10:50 | 显示全部楼层
楼主,记得反馈
谢谢
回复 支持 反对

使用道具 举报

发表于 2007-9-14 10:11:20 | 显示全部楼层
由于长时间没有反馈,先结贴了!
有问题请开新贴。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-16 04:02 , Processed in 0.038105 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表