我正在开发一个必须按以下格式生成唯一引用号的系统:
[A-Z]{2}[current][8 randomized alpha/numerical characters]
许多用户可能同时使用该系统。
所以我的问题是如何确保这个参考号始终是唯一的。经过一年后,可以重复使用8个随机字符。该号码将存储在数据库中。
答案 0 :(得分:1)
如果您的最终值确实必须包含随机元素,那么确保唯一性的唯一方法是生成它,然后检查现有数据以查看生成的值是否已存在。
您可以使用AFTER INSERT / UPDATE TRIGGER执行此操作。
答案 1 :(得分:1)
declare @abc varchar(36) = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
select char(cast(rand()*1000 as int)% 25+65)
+ char(cast(rand()*1000 as int)% 25+65) + '[current]'
+ SUBSTRING(@abc,cast(rand()*1000 as int)% 36+1,1)
+ SUBSTRING(@abc,cast(rand()*1000 as int)% 36+1,1)
+ SUBSTRING(@abc,cast(rand()*1000 as int)% 36+1,1)
+ SUBSTRING(@abc,cast(rand()*1000 as int)% 36+1,1)
+ SUBSTRING(@abc,cast(rand()*1000 as int)% 36+1,1)
+ SUBSTRING(@abc,cast(rand()*1000 as int)% 36+1,1)
+ SUBSTRING(@abc,cast(rand()*1000 as int)% 36+1,1)
+ SUBSTRING(@abc,cast(rand()*1000 as int)% 36+1,1) code
我故意混合样式以显示变体。