![]() |
1
4
uniqueidentifier保证是唯一的,不仅对于这个表,而且对于所有的表。
请注意,返回的较小PIN不能保证对所有用户都是唯一的,但可能更易于管理,具体取决于您的应用程序。 Coupon Collector's 问题,并接近n logn复杂度,这将导致非常慢的插入(插入时间与现有元素的数量成比例,因此插入M个项将变成O(n^2))。避免这种情况的最简单方法是使用一个大的唯一ID,并仅为您的PIN选择其中的一部分,假设您可以放弃PIN值的唯一性。 编辑2: 如果有这样的表定义
这将创建
只是说,我建议你不要认为这是安全的。你应该考虑到其他用户总是有可能猜到其他人的PIN,除非你以某种方式限制了允许的猜测次数(例如,尝试3次后停止接受请求,类似于银行在3次PIN输入不正确后将你的卡封存。) |
![]() |
2
1
|
![]() |
3
0
一个默认值为NEWID()的UNIQUEIDENTIFIER类型列怎么样?
|
![]() |
4
0
请记住,通过要求一个唯一的PIN(这是不常见的),您将限制允许的最大用户数的PIN规范。你确定要这个吗?
|
![]() |
5
0
这就产生了一个介于10亿到20亿之间的数字。您将模拟某种程度的随机性,因为它是从NEWID函数派生的。也可以根据需要格式化结果。 这并不能保证唯一性。我建议您对PIN列使用唯一的约束。而且,创建新PIN的代码应该在赋值之前检查新值是否唯一。 |
![]() |
6
0
使用随机数。
表中的值越稀疏,效果就越好。如果赋值的数目与可用值的数目成正比,那么它就不起作用了。 一旦生成了数字,您就有了几个选项。 2) 生成值并查找最大和最小现有唯一标识符。
|
![]() |
Duvan · 将逗号(,)替换为点(.)[副本] 2 年前 |
![]() |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
![]() |
SoT · SQL Server中求和函数的工作方式 2 年前 |
![]() |
NKAT · 将列值聚合到列表中会产生错误 2 年前 |
![]() |
deanpillow · 返回两列中有一个匹配值的记录 2 年前 |
![]() |
snowflakes74 · 在Dapper中异步查询多个结果 2 年前 |