关于Update 更新过后的数据问题?

ShapeRock 2003-03-25 10:45:07
表AAA
id the1
1 2
2 4
3 6
4 8
declare @id int
Update AAA set the1=(Select the1 from AAA where id=1)+1
此句执行后 表AAA为
id the1
1 3
2 3
3 3
4 3
也就是说更新完id.1行后,在更新id.2,id.3,id.4时去读id.1的the1时,读出的是2,而不是更新后的3,请问是不是有什么设置或方法让更新id.1的the1后读the1的值是更新后的值 ?
...全文
104 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-03-25
  • 打赏
  • 举报
回复
你是想
Update AAA set the1=isnull((Select the1 from AAA where id=AAA.id-1),the1)
但我也想呀!可是sql2k没有这个功能呀!不知道sql2003有没有
yoki 2003-03-25
  • 打赏
  • 举报
回复
关注
Niguna 2003-03-25
  • 打赏
  • 举报
回复
好象没有这样的方法
但是可以通过临时表或临时字段实现
把每次得到的字段赋予一中间字段
嘿嘿~~
流星尔 2003-03-25
  • 打赏
  • 举报
回复
表AAA
id the1
1 2
2 4
3 6
4 8

得到什么样的结果,是这个吗,
id the1
1 3
2 2
3 2
4 2

create trigger update_the1 on aaa
for update
as
if exists(select id from deleted where id=1)
update aaa set the1=b.the1 from aaa a,deleted b where a.id=b.id and a.id<>1
ShapeRock 2003-03-25
  • 打赏
  • 举报
回复
我晕了。
CrazyFor 2003-03-25
  • 打赏
  • 举报
回复
好象没有这样的方法。
pengdali 2003-03-25
  • 打赏
  • 举报
回复
游标??
不如用临时表,你要知道你有===>超过几十万条数据,慢!
ShapeRock 2003-03-25
  • 打赏
  • 举报
回复
楼上的有理。但Curosr能保证顺序吗?
select * from TheA order by id.当记录超过几十万条还能保证是按id的顺序排列吗?
leimin 2003-03-25
  • 打赏
  • 举报
回复
我也看过你地关于要获得UPDATE更新记录地顺序地帖子,我认为用CURSOR是最合适和安全地,应为UPDATE地顺序和INDEX和PAGE 和字符集...都有关系,并且WIN2K是可以自由更改而且每一个TABLE都有可能不一样。
所以我地意见是用CURSOR.
leimin 2003-03-25
  • 打赏
  • 举报
回复
TO:楼主
请问是不是有什么设置或方法让更新id.1的the1后读the1的值是更新后的值 ?
用CURSOR不是非常地方便何合适么!

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧