因为两个网站互相独立,a网站用update更新idsource(id=id+1)得到id号,过一段时间,b网站用同样的方法获取id,却不是在a网站更新的基础上得到累加的id值,而是得到a网站更新前的某个值,导致id号重复,请问什么原因
15 个解决方案
#1
你的网站引用的不是同一数据集吧,那ID应该也不同的,
不懂,
不懂,
#2
获取的记录就不是同一条哦?
#3
用newid()吧 多少个机器也重复不了
#4
#5
问题的关键是你B网站是怎么获取id的???
如果是通过A网站来获取的话
那么就需要检查链接服务器或者触发器等的用法是不是正确的了
就这样单纯的说确实不知道是什么原因
如果有数据 或者有程序来看看或许能找到原因
如果是通过A网站来获取的话
那么就需要检查链接服务器或者触发器等的用法是不是正确的了
就这样单纯的说确实不知道是什么原因
如果有数据 或者有程序来看看或许能找到原因
#6
数据库中有一张表idsource,只有一列一条记录,如下:
id
1000
现在a网站需要id,它把idsource的值即id=id+1,然后得到1001,而且可能需要了n个id,即已经累加到更大的值,
按道理b网站用同样的方法获取id,应该是在a网站更新的基础上得到的值比如可能是1002,或者更大
但是现在问题是b网站在10个小时后(比如)获取id,结果还是1000,然后得到了1001,和a网站得到的id值重复
id
1000
现在a网站需要id,它把idsource的值即id=id+1,然后得到1001,而且可能需要了n个id,即已经累加到更大的值,
按道理b网站用同样的方法获取id,应该是在a网站更新的基础上得到的值比如可能是1002,或者更大
但是现在问题是b网站在10个小时后(比如)获取id,结果还是1000,然后得到了1001,和a网站得到的id值重复
#7
而且我用的是update,导致id本来已经被a网站更新到1100,被b网站一用,又回到了初始值,导致新的id都重了,郁闷呀
#8
另外我每次更新后都commit了,而且两个网站之间的操作间隔时间至少几个小时
#9
按你描述来看是没错的。
#10
或者有n个网站(使用同一个数据库)需要id,有没有更好的获取唯一id(在n个网站之间都是唯一的)的方法
#11
#12
两个网站怎么得到这个ID的? 网站有做缓存吗?
#13
我现在的办法是两个网站都操作同一个数据库的同一张表的同一个id值,但是现在遇到这个问题
#14
不知道楼主获取和更新 ID 的方法和具体语句,不好判断问题在哪。
但是我写了一个类似的,
create table ##ID (id int)
insert into ##ID select 0
declare @id int
update ##ID set @id=id,id=id+1
select id,@id from ##ID
但是我写了一个类似的,
create table ##ID (id int)
insert into ##ID select 0
declare @id int
update ##ID set @id=id,id=id+1
select id,@id from ##ID
#15
实在对不起,程序问题,一个角落隐藏了不一样的生成id的语句,导致生成id方式不统一,乱了,汗哪,惭愧,结分
#1
你的网站引用的不是同一数据集吧,那ID应该也不同的,
不懂,
不懂,
#2
获取的记录就不是同一条哦?
#3
用newid()吧 多少个机器也重复不了
#4
#5
问题的关键是你B网站是怎么获取id的???
如果是通过A网站来获取的话
那么就需要检查链接服务器或者触发器等的用法是不是正确的了
就这样单纯的说确实不知道是什么原因
如果有数据 或者有程序来看看或许能找到原因
如果是通过A网站来获取的话
那么就需要检查链接服务器或者触发器等的用法是不是正确的了
就这样单纯的说确实不知道是什么原因
如果有数据 或者有程序来看看或许能找到原因
#6
数据库中有一张表idsource,只有一列一条记录,如下:
id
1000
现在a网站需要id,它把idsource的值即id=id+1,然后得到1001,而且可能需要了n个id,即已经累加到更大的值,
按道理b网站用同样的方法获取id,应该是在a网站更新的基础上得到的值比如可能是1002,或者更大
但是现在问题是b网站在10个小时后(比如)获取id,结果还是1000,然后得到了1001,和a网站得到的id值重复
id
1000
现在a网站需要id,它把idsource的值即id=id+1,然后得到1001,而且可能需要了n个id,即已经累加到更大的值,
按道理b网站用同样的方法获取id,应该是在a网站更新的基础上得到的值比如可能是1002,或者更大
但是现在问题是b网站在10个小时后(比如)获取id,结果还是1000,然后得到了1001,和a网站得到的id值重复
#7
而且我用的是update,导致id本来已经被a网站更新到1100,被b网站一用,又回到了初始值,导致新的id都重了,郁闷呀
#8
另外我每次更新后都commit了,而且两个网站之间的操作间隔时间至少几个小时
#9
按你描述来看是没错的。
#10
或者有n个网站(使用同一个数据库)需要id,有没有更好的获取唯一id(在n个网站之间都是唯一的)的方法
#11
#12
两个网站怎么得到这个ID的? 网站有做缓存吗?
#13
我现在的办法是两个网站都操作同一个数据库的同一张表的同一个id值,但是现在遇到这个问题
#14
不知道楼主获取和更新 ID 的方法和具体语句,不好判断问题在哪。
但是我写了一个类似的,
create table ##ID (id int)
insert into ##ID select 0
declare @id int
update ##ID set @id=id,id=id+1
select id,@id from ##ID
但是我写了一个类似的,
create table ##ID (id int)
insert into ##ID select 0
declare @id int
update ##ID set @id=id,id=id+1
select id,@id from ##ID
#15
实在对不起,程序问题,一个角落隐藏了不一样的生成id的语句,导致生成id方式不统一,乱了,汗哪,惭愧,结分