社区
疑难问题
帖子详情
如何在SQLSERVER的數據表中只是鎖定那條紀錄的那個字段?請高手幫幫忙!無限感激
hatedeadlock
2003-09-14 07:39:48
我隻知道在SQLSERVER 可以使用 ROWLOCK 來鎖定行紀錄 可是怎樣
鎖定 那行 那個字段呢!其他字段不鎖
...全文
67
9
打赏
收藏
如何在SQLSERVER的數據表中只是鎖定那條紀錄的那個字段?請高手幫幫忙!無限感激
我隻知道在SQLSERVER 可以使用 ROWLOCK 來鎖定行紀錄 可是怎樣 鎖定 那行 那個字段呢!其他字段不鎖
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
txlicenhe
2003-10-06
打赏
举报
回复
恭喜楼主,楼主的ID真有意思。 hatedeadlock,经常碰到死锁所以讨厌死锁?
hatedeadlock
2003-10-06
打赏
举报
回复
我将有同时更新的字段分开!让程序更新不同的表
问题解决了!谢谢大家的回复!
hatedeadlock
2003-09-29
打赏
举报
回复
重新説明:
客戶端的瀏覽 都是 select * from table nolock (允許髒讀)
問:
如果同時有100個人 同時 執行select * from table nolock
這個時候 到底能不能更新數據表呀?
pengdali
2003-09-24
打赏
举报
回复
1 如何锁一个表的某一行
A 连接中执行
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
begin tran
select * from tablename with (rowlock) where id=3
waitfor delay '00:00:05'
commit tran
B连接中如果执行
update tablename set colname='10' where id=3 --则要等待5秒
update tablename set colname='10' where id<>3 --可立即执行
2 锁定数据库的一个表
SELECT * FROM table WITH (HOLDLOCK)
注意: 锁定数据库的一个表的区别
SELECT * FROM table WITH (HOLDLOCK)
其他事务可以读取表,但不能更新删除
SELECT * FROM table WITH (TABLOCKX)
其他事务不能读取表,更新和删除
leimin
2003-09-22
打赏
举报
回复
问:有什么样的办法 让几个程序 同时调用 同一个或者不同存贮过程 同时更新数据表的 同一行的不同字段时 互不干扰 各完成各的操作?
A:mssqlserver2000默认的lock 的粒度是行级,所以如果一个线程在update一条记录时,就在该行加了排他锁,所以其它的线程是无法读取该记录(除非可以脏读),这是因为在mssqlserver中是不可以同时给一条记录加不同的锁。另外mssqlserver没有锁某一列的锁!
所以让几个程序 同时调用 同一个或者不同存贮过程 同时更新数据表的 同一行的不同字段时如果一个在更新,其他的就只能WAIT....
happydreamer
2003-09-17
打赏
举报
回复
1 如何锁一个表的某一行
A 连接中执行
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
begin tran
select * from tablename with (rowlock) where id=3
waitfor delay '00:00:05'
commit tran
B连接中如果执行
update tablename set colname='10' where id=3 --则要等待5秒
update tablename set colname='10' where id<>3 --可立即执行
txlicenhe
2003-09-17
打赏
举报
回复
用触发器吧
if update(Field1)
....
if Update(Field2)
...
hatedeadlock
2003-09-17
打赏
举报
回复
问题是这样的:
有几个程序 他们可能同时调用 同一个存贮过程 同时更新数据表的 同一行的不同字段
这样在变化激烈的时候数据库老是会出现DEADLOCK!
我在存贮过程中加上
declare @CurrentTimeout int
begin transaction firstupdate
Set Transaction isolation level read uncommitted
select @CurrentTimeout = @@lock_timeout
if @CurrentTimeout<>3000 SET LOCK_TIMEOUT 3000
........
if @@error=0 commit tran else rollback tran 可是这样一样解决不了问题!更坏的是他会丢失更新!
问:有什么样的办法 让几个程序 同时调用 同一个存贮过程 同时更新数据表的 同一行的不同字段时 互不干扰 各完成各的操作
nboys
2003-09-14
打赏
举报
回复
1 如何锁一个表的某一行
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM table ROWLOCK WHERE id = 1
2 锁定数据库的一个表
SELECT * FROM table WITH (HOLDLOCK)
加锁语句:
MSSQL:
select col1 from 表 (tablockx) where 1=0 ;
加锁后其它人不可操作,直到加锁用户解锁,用commit或rollback解锁
自动驾驶运动规划(Motion Planning).pdf
自动驾驶运动规划(Motion Planning)问题分析
财务数据分析模型6.xlsx
Excel数据看板,Excel办公模板,Excel模板下载,Excel数据统计,数据展示
人力资源数据分析看版.xlsx
Excel数据看板,Excel办公模板,Excel模板下载,Excel数据统计,数据展示
重庆大学2011-2012(2)数字电子技术II.pdf
重庆大学期末考试试卷,重大期末考试试题,试题及答案
随波逐流CTF编码工具 V5.6 20240424.rar
由随波逐编写开发,CTF编码工具为用户提供丰富的离线加密解密功能,还可以对字符编码进行转换,文件隐写查看,用户可以根据自己的需求来使用功能,非常实用,能够提高大家的工作效率!
疑难问题
22,209
社区成员
121,730
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章