社区
疑难问题
帖子详情
如何在SQLSERVER的數據表中只是鎖定那條紀錄的那個字段?請高手幫幫忙!無限感激
hatedeadlock
2003-09-14 07:39:48
我隻知道在SQLSERVER 可以使用 ROWLOCK 來鎖定行紀錄 可是怎樣
鎖定 那行 那個字段呢!其他字段不鎖
...全文
70
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解锁
SQL Server数据库基础到精通课程
本课程是陈表达在学习SQL server数据库后做的完整笔记,本课程讲解从最开始的 创建数据库、创建数据表、已经数据的写入、查询、修改更新、删除,
字段
运算、
字段
运算统计、分类汇总、数据分析、条件判断,条件筛选及...
3天掌握SQL Server 2012 数据库
SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),Microsoft SQL Server 2012 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 数据库引擎为...
SQL Server 2019数据库基础入门视频教程
我讲的这门课程主要涉及SQL Server数据的基础操作和SQL语法,因为99.9%的软件技术人员掌握这些就可以了,数据库的大部分功能,我们平时是用不到的,所以不用花太多时间去研究,在需要的时候百度就可以了。...
SQL Server 2016查询(二)
本课程基于微软新的SQL Server 2016,真正的初级带你进入数据库的大门,从数据库的安装配置开始,逐步讲述了创建数据库、数据表,基础查询、查询、子查询、数据库完整性、视图、索引、存储过程、游标、函数、触发器...
详解SQL Server索引
全面重新认识SQL Server的索引。详细讲解索引的组织结构,数据的写入过程,sql语句的执行计划等... 本课程的索引是SQL Server各个版本的通用技术,所以适用于SQL Server2008,SQL Server2012, SQL Server2016等版本。
疑难问题
22,210
社区成员
121,726
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章