Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为银行交易生成OrderId的最佳方法是什么?_C#_Sql Server 2008_Random_Unique Key_Onlinebanking - Fatal编程技术网

C# 为银行交易生成OrderId的最佳方法是什么?

C# 为银行交易生成OrderId的最佳方法是什么?,c#,sql-server-2008,random,unique-key,onlinebanking,C#,Sql Server 2008,Random,Unique Key,Onlinebanking,我需要生成一个没有任何前导零的9位订单id。最好的方法是什么 我想到的是:创建一个具有唯一ID列的表,然后用C代码生成一个介于100000000和999999999之间的随机数,并尝试将其插入表中,直到成功为止。在这种情况下,获得唯一约束异常并重新生成编号的可能性有多大 如果我想的方向是正确的,那么除了在C代码中处理异常然后重新生成外,还有什么方法可以在sql server本身中这样做呢 或者有没有其他最好的方法 谢谢 生成。。。直到我成功 嗯。如果您的交易数量与所有可能的交易数量相比仍然相对较

我需要生成一个没有任何前导零的9位订单id。最好的方法是什么

我想到的是:创建一个具有唯一ID列的表,然后用C代码生成一个介于100000000和999999999之间的随机数,并尝试将其插入表中,直到成功为止。在这种情况下,获得唯一约束异常并重新生成编号的可能性有多大

如果我想的方向是正确的,那么除了在C代码中处理异常然后重新生成外,还有什么方法可以在sql server本身中这样做呢

或者有没有其他最好的方法

谢谢

生成。。。直到我成功

嗯。如果您的交易数量与所有可能的交易数量相比仍然相对较低,那么它甚至可能会起作用,但这似乎真的是错误的。捕获异常并重试


您是否有任何理由不使用自动递增键,从100000000开始计数?

如果您有令人信服的理由希望ID以随机顺序排列,您可以在SQL Server中使用标识种子功能并定义起始值,也许您可以用C编写一个一次性实用程序来生成随机数字列表,并将它们插入SQL表中。然后,当您的程序需要ID时,它可以从该表中选择下一个可用ID。当然,您需要一个位字段或一些东西来标记使用了哪些ID。您可能希望将select和mark操作放入存储过程中,并让该过程在表工作时锁定该表,以便同步进程在有机会将其标记为已用之前不会获得相同的ID。

如果您的目标是生成看似随机、唯一的事务ID,我建议使用事务所有者userid中的部分和事务本身中的部分,并将它们组合起来生成您唯一的transactionid。如果不可能,那么我建议将GUID转换为十进制。以下是如何做到这一点:

如果我不想让orderID按顺序排列,那么?很抱歉,我想不出一个足够好的理由来避免这里的顺序编号,让我们的生活变得复杂。默默无闻的安全措施?嗯,你知道在法律上你可能必须让他们保持秩序吗?发票和会计行必须编号,这在我所知道的几乎所有法律中都必须是非随机的,这样就可以测试分类账是否完整。请注意,一些伪随机序列非常适合这里-快速,不是随机的,但随机性足以让人们不使用ethext数字。如果我是你的话,我会在这里和一位律师谈谈,并保证你不会写无用的软件。为什么你会想要一个非顺序顺序的顺序标识符,这似乎是在浪费时间,毫无益处!在所有银行进行在线交易时,我从未见过这样的OrderId:100000000从未见过超过2或3个零,如果我应用autoincrement,对于前9999个交易,我将得到一个包含四个连续零的OrderId,这就是我想要随机OrderId的原因。嗯。。。当你的随机函数吐出500000000时,你会怎么做?这就是为什么我在这里问了一个问题来获得意见。我不知道,但你见过这样的订单id吗?比如5000000009亿行?是的,为什么不呢,我们开始吧。