两个网站使用同一个sqlserver数据库同一张表,得到的数据不一样??

时间:2021-05-14 07:54:22
我有两个网站,使用同一个数据库的同一张表idsource递增1来产生记录的id号,但是出现问题
因为两个网站互相独立,a网站用update更新idsource(id=id+1)得到id号,过一段时间,b网站用同样的方法获取id,却不是在a网站更新的基础上得到累加的id值,而是得到a网站更新前的某个值,导致id号重复,请问什么原因

15 个解决方案

#1


你的网站引用的不是同一数据集吧,那ID应该也不同的,
不懂,

#2


获取的记录就不是同一条哦?

#3


用newid()吧 多少个机器也重复不了

#4


该回复于2010-01-19 17:23:11被版主删除

#5


问题的关键是你B网站是怎么获取id的???
如果是通过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值重复

#7


而且我用的是update,导致id本来已经被a网站更新到1100,被b网站一用,又回到了初始值,导致新的id都重了,郁闷呀

#8


另外我每次更新后都commit了,而且两个网站之间的操作间隔时间至少几个小时

#9


按你描述来看是没错的。

#10


或者有n个网站(使用同一个数据库)需要id,有没有更好的获取唯一id(在n个网站之间都是唯一的)的方法

#11


该回复于2010-07-28 09:22:02被版主删除

#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

#15


实在对不起,程序问题,一个角落隐藏了不一样的生成id的语句,导致生成id方式不统一,乱了,汗哪,惭愧,结分

#1


你的网站引用的不是同一数据集吧,那ID应该也不同的,
不懂,

#2


获取的记录就不是同一条哦?

#3


用newid()吧 多少个机器也重复不了

#4


该回复于2010-01-19 17:23:11被版主删除

#5


问题的关键是你B网站是怎么获取id的???
如果是通过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值重复

#7


而且我用的是update,导致id本来已经被a网站更新到1100,被b网站一用,又回到了初始值,导致新的id都重了,郁闷呀

#8


另外我每次更新后都commit了,而且两个网站之间的操作间隔时间至少几个小时

#9


按你描述来看是没错的。

#10


或者有n个网站(使用同一个数据库)需要id,有没有更好的获取唯一id(在n个网站之间都是唯一的)的方法

#11


该回复于2010-07-28 09:22:02被版主删除

#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

#15


实在对不起,程序问题,一个角落隐藏了不一样的生成id的语句,导致生成id方式不统一,乱了,汗哪,惭愧,结分