sql server 有没有行级的select 锁,如果没有,“行级的select 锁”的怎么实现

xiaozhanger 2008-07-18 10:21:21
sql server 有没有行级的select 锁,如果没有,“行级的select 锁”的怎么实现


因为现在有好多客户端要取同一个表的数据,select下来处理,然后更新字段,再update回去

我担心多个客户端取到的相同的行。

请帮我一下
...全文
254 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ybcaa 2008-10-21
  • 打赏
  • 举报
回复
有限行级排它锁:select * from tb01 with (rowlock,xlock,readpast) where field01='0'
两个事务同时执行这句时,第二个事务读取不到第一个事务读取到的数据。但如果第二个事务执行的是:select * from tb01,则可以读取到第一个事务读取到的数据。
wzy_love_sly 2008-07-18
  • 打赏
  • 举报
回复
恩 只能用xlock+pagelock进行页级锁代替,单独锁一行的好象没有
cxmcxm 2008-07-18
  • 打赏
  • 举报
回复
select * from 表 with (repeatableread,rowlock)
where 条件
为共享行锁

排它锁没有行锁
wzy_love_sly 2008-07-18
  • 打赏
  • 举报
回复
那帖不说了,行级用xlock+pagelock
中国风 2008-07-18
  • 打赏
  • 举报
回复
use test
go
if not object_id('T') is null
drop table T
Go
Create table T([ID] int,[Name] nvarchar(2),[Sex] nvarchar(2))
Insert T
select 1,N'N1',N'S1' union all
select 2,N'N2',N'S2' union all
select 3,N'N3',N'S3'
Go
連接1:
begin tran
Select * from T with(updlock,rowlock) where ID=1

/*
ID Name Sex
----------- ---- ----
1 N1 S1

(1 個資料列受到影響)


*/

連接2:
begin tran
Select * from T with(updlock,READPAST)

/*
ID Name Sex
----------- ---- ----
2 N2 S2
3 N3 S3

(2 個資料列受到影響)


*/

--rollback
yhtapmys 2008-07-18
  • 打赏
  • 举报
回复
消灭零回复
窝只知道有表级的说

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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