SQLSERVER 锁定记录,只允许单用户修改的例子
发布时间:2020-12-12 13:19:22 所属栏目:MsSql教程 来源:网络整理
导读:http://bbs.csdn.net/topics/300001895 锁定记录,只允许单用户修改的例子 ? create ? table ? #锁表(编号? int ) ? --代码: if?exists( select ? 1? from ? 编号= '你的编号' )? ?? return ? insert ? #锁表? values ( ) ? .....你处理的代码 ? delete ? wh
http://bbs.csdn.net/topics/300001895
锁定记录,只允许单用户修改的例子 ? create ?
table ?
#锁表(编号?
int
)
?
--代码:
if?exists(
select ?
1?
from ?
编号=
'你的编号'
)?
??
return
?
insert?
#锁表?
values
(
)
?
.....你处理的代码
?
delete?
where ?
'你的编号'
--------------------------------------
--为了防止死锁,建议加时间:
?
,时间?datetime)
?
--代码:
'你的编号'?
and ?
datediff(ss,时间,getdate())<5??
--如果锁的时候超过5秒,则是处理超时
)?
return
?
delete?
#锁表
?
.....你处理的代码
?
'你的编号'
---------------------------------------
--锁定记录,只允许单用户修改的例子:
?
--创建测试环境
--创建测试表--部门表
部门(departmentid?
name ?
varchar
(10))
?
--记录锁定表
lock(departmentid?
v_getdate?
as ?
dt=getdate()
go
--创建自定义函数,判断记录是否锁定
function?
f_chk(@departmentid?
)
returns?
bit
as
begin
declare?
@re?
bit
v_getdate
lock?
departmentid=@departmentid
????
set ?
@re=1
else
@re=0
return
(@re)
end
go
?
--数据处理测试
if?dbo.f_chk(3)=1
????
print?
'记录被锁定'
else
begin
begin?
tran
insert?
into ?
(3,getdate())
update?
部门?
set ?
name
=
'A' ?
departmentid=3
departmentid=3
commit?
tran
end
?
--删除测试环境
drop?
部门
v_getdate
f_chk
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |