<span style="color: rgb(51, 51, 51); font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 24px; background-color: rgb(245, 245, 245);">不要迷恋行锁,行锁只是传说</span><br style="box-sizing: content-box; color: rgb(51, 51, 51); font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 24px; background-color: rgb(245, 245, 245);" /><br style="box-sizing: content-box; color: rgb(51, 51, 51); font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 24px; background-color: rgb(245, 245, 245);" /><span style="color: rgb(51, 51, 51); font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 24px; background-color: rgb(245, 245, 245);">SQL的锁会自动升级。</span><br style="box-sizing: content-box; color: rgb(51, 51, 51); font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 24px; background-color: rgb(245, 245, 245);" /><br style="box-sizing: content-box; color: rgb(51, 51, 51); font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 24px; background-color: rgb(245, 245, 245);" /><span style="color: rgb(51, 51, 51); font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 24px; background-color: rgb(245, 245, 245);">应想法提高整体的性能,比如一般一次更新整批数据比一条一条更新效率高,更新何删除的条件一定要有好的索引</span>
如何锁一个表的某一行
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)
其他事务不能读取表,更新和删除
如何锁一个表的某一行
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
update
tablename
set
colname=
'10'
where
id<>3
2 锁定数据库的一个表
SELECT
*
FROM
table
WITH
(HOLDLOCK)
注意: 锁定数据库的一个表的区别
SELECT
*
FROM
table
WITH
(HOLDLOCK)
其他事务可以读取表,但不能更新删除
SELECT
*
FROM
table
WITH
(TABLOCKX)
其他事务不能读取表,更新和删除