uniqueidentifier字段 唯一值的问题
执行以下语句N亿次,两个表中fa与fb中的值永远不会相同吗?
insert into ta (fa) select newID()
insert into tb (fb) select newID()
谢谢
------最佳解决方案--------------------总感觉guid、uuid之类的算法,还是有很低的概率会重复的
------其他解决方案--------------------N亿亿亿次,亦不相同.
------其他解决方案--------------------不会想同的
------其他解决方案--------------------使用:NEWSEQUENTIALID ( )这个函数创建的随机数较为稳定。
------其他解决方案--------------------declare @t table(fa uniqueidentifier default NEWSEQUENTIALID() ,fid int)
declare @s uniqueidentifier; --varchar(100);
insert @t (fid) values (1);
select @s=fa from @t
print @s
set @s=newid()
print @s
------其他解决方案--------------------declare @s uniqueidentifier;
set @s=NEWID()
select @s
--or
select newid()
------其他解决方案--------------------
32 个字符,各字符取不同值36种, 32^36 = 1.5E54, 在一亿次中重复的概率,应该可以算得出来.
------其他解决方案--------------------设置列的默认值是newid().
------其他解决方案--------------------先插,再取
------其他解决方案--------------------
还是newid看着帅
------其他解决方案--------------------谢谢!
除以下写法,另外还有其他的方法返回newID()生产的值吗?
declare @NV uniqueidentifier
select @NV=newID()
insert into ta select @NV
------其他解决方案--------------------是否可以得到NEWSEQUENTIALID()产生的值呢,我需要在另外的表中应用到该值的
------其他解决方案--------------------
declare @s varchar(100);
set @s=NEWSEQUENTIALID()
------其他解决方案--------------------楼上的你,你那样写执行出错的
------其他解决方案--------------------
哦,还真是,与newid()不一样!
declare @t table(fa uniqueidentifier default NEWSEQUENTIALID() ,fid int)
declare @s uniqueidentifier; --varchar(100);
insert @t (fid) values (1);
select @s=fa from @t
set @s=newid()
print @s
print @s
------其他解决方案--------------------
NEWSEQUENTIALID的结果,同一台机做了100次,后面4段都没变:
NEWSEQUENTIALID - newid