我正在试图弄清楚如何在应用程序级别生成主键(ISV我没有代码库)所以我可以在后端执行一致的插入而不必担心重复密钥。
通过ID订购只是为了了解进展情况:
使用相应ID创建的日期
起点。:
date sysid c_time
02/10/2009 A00029BC75ECF751 1835010
02/10/2009 A00059BC76712863 1835013
02/10/2009 A00069BC7BF6F327 1835014
08/14/2013 A0006A235AF21680 5841653
02/10/2009 A00099BC76D57865 1835017
07/06/2009 A000A9C590BDF134 4000288
02/10/2009 A000B9BC73594306 1835019
08/19/2009 A000D9C857013579 4795995
02/10/2009 A000E9BC7222D209 1835022
04/08/2009 A000E9C0007D0727 4810168
...
结束
date sysid c_time
10/06/2010 AFFFA9E2205D9752 5919265
01/29/2013 AFFFCA1706413272 3420395
02/10/2009 AFFFD9BC75264250 1835005
07/13/2009 AFFFD9C60B25C732 4402146
11/09/2012 AFFFDA11FBC8C706 5908518
07/17/2009 AFFFE9C64E1EB645 540642
09/30/2010 AFFFE9E1C7021704 3264751
02/10/2009 AFFFF9BC755DE457 1835008
我认为这是日期时间的一些算法,A作为前缀?
有人有什么想法吗?
答案 0 :(得分:1)
我正在试图弄清楚如何生成主键...所以我可以在后端执行一致的插入而不必担心重复密钥。
嗯,没有算法或源代码是不可能的,但时间戳似乎是合理的,因为序列ID之间的数字差异在顶部和底部集之间是相同的数量级。
由于它们看起来像64位十六进制数字,所以可以只将“1”添加到“最高”数字。但是,不能保证第三方应用程序也在检查重复项 - 它可能会插入一个与您输入的值相冲突的值。
假设它们的插入是顺序的(并且您的插入不需要是顺序的),您可以从FFFFFFFFFFFFFFFF
开始并向后工作。
还有一些变量你需要考虑 - 是第一个3/4位(1010 = A)标志?在第二位插入一个值是否会造成任何伤害?通过查看生成的ID,这些问题都无法解决。
但是,您尝试的任何内容都应该使用ISV进行验证。