sqlserver 锁定一行数据,禁止读取,修改和删除
2015-05-06 10:57
381 查看
sql 事务中 有时候需要锁定某行,等事物完成后 释放此行。
使用 with(ROWLOCK,UpdLock) 锁定当前行。禁止读取,修改和删除
a 事务
ALTER PROCEDURE [dbo].[asuo]
AS
BEGIN
begin tran
SELECT TOP 1 * FROM dbo.JYQ_HLT_Order with(ROWLOCK,UpdLock) WHERE orderID=321878
UPDATE dbo.JYQ_HLT_Order SET orderBillingstatus=13 WHERE orderID=321878
SELECT TOP 1 * FROM dbo.JYQ_HLT_Order WHERE orderID=321878
waitfor delay '00:00:10'
COMMIT TRAN
END
b 事务
ALTER PROCEDURE [dbo].[bsuo]
AS
BEGIN
begin tran
UPDATE dbo.JYQ_HLT_Order SET orderBillingstatus=14 WHERE orderID=321878
SELECT TOP 1 * FROM dbo.JYQ_HLT_Order WHERE orderID=321878
COMMIT TRAN
END
b事务等待 a事务 COMMIT TRAN 后 才会执行。
with(ROWLOCK)任何作用
with(ROWLOCK,UpdLock) 必须组合使用才可以生效
使用 with(ROWLOCK,UpdLock) 锁定当前行。禁止读取,修改和删除
a 事务
ALTER PROCEDURE [dbo].[asuo]
AS
BEGIN
begin tran
SELECT TOP 1 * FROM dbo.JYQ_HLT_Order with(ROWLOCK,UpdLock) WHERE orderID=321878
UPDATE dbo.JYQ_HLT_Order SET orderBillingstatus=13 WHERE orderID=321878
SELECT TOP 1 * FROM dbo.JYQ_HLT_Order WHERE orderID=321878
waitfor delay '00:00:10'
COMMIT TRAN
END
b 事务
ALTER PROCEDURE [dbo].[bsuo]
AS
BEGIN
begin tran
UPDATE dbo.JYQ_HLT_Order SET orderBillingstatus=14 WHERE orderID=321878
SELECT TOP 1 * FROM dbo.JYQ_HLT_Order WHERE orderID=321878
COMMIT TRAN
END
b事务等待 a事务 COMMIT TRAN 后 才会执行。
with(ROWLOCK)任何作用
with(ROWLOCK,UpdLock) 必须组合使用才可以生效
相关文章推荐
- Java读取json文件并对json数据进行读取、添加、删除与修改操作
- 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。
- Java读取json文件并对json数据进行读取、添加、删除与修改操作
- 在用easyui中做CRUD功能时,当删除一行或多行数据后再点击修改会提示你选中了多行,如何解决这个bug了?
- 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除
- 在VC下采用ADO实现BLOB(Binary)数据的存储,读取,修改,删除。
- 用java实现对MySql数据库中数据的读取、插入、修改和删除
- 锁定明细表格的某一行数据(不允许修改)
- JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder
- 读取SQLServer 数据表结构
- ASP.NET cookie 操作详解cookie 写入、读取、修改、删除
- 利用Document读取和修改数据
- html之表格数据增加删除修改
- Java如何大批量从json数据源中按指定符号隔字符串,并修改、删除数据
- 6. 数据的查询、删除和修改
- Mysql学习3——查看表结构、修改和删除数据表
- oracle创建数据表,修改,删除数据表
- java中修改文件名字,保证文件中每一行数据不重复
- 用XMLHTTP无刷新读取,增加,修改数据
- 数据库与表的操作之创建、修改和删除数据