【发布时间】:2012-03-04 05:32:33
【问题描述】:
我需要生成一个不带任何前导零的 9 位订单 ID。最好的方法是什么?
我想到的是:创建一个具有唯一 ID 列的表,然后在 C# 代码中生成一个介于 100000000 和 999999999 之间的随机数,并尝试将其插入表中,直到我成功为止。在此获得唯一约束异常并重新生成数字的机会是多少?
如果我的想法是正确的,有没有办法在 sql server 本身中执行此操作,而不是在 C# 代码中处理异常然后重新生成?
或者还有其他最好的方法吗?
谢谢
【问题讨论】:
-
你为什么要一个非顺序的订单标识符,似乎是在浪费时间而没有任何好处!
-
在所有银行进行在线交易时,我从未见过这样的OrderId:100000000
-
从未见过超过 2 或 3 个零,如果我应用自动增量,对于前 9999 笔交易,我将获得一个包含四个连续零的 OrderId,这就是我想要随机 OrderId 的原因。
-
嗯......当你的随机函数吐出 500000000 时你会怎么做?
-
这就是为什么我在这里问一个问题以获得意见。我不知道,但你见过这样的订单编号吗?比如500000000
标签: c# sql-server-2008 random unique-key onlinebanking