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
sql keyword" style="white-space:Nowrap; list-style:none; font-family:Consolas,
name
varchar
(10))
--记录锁定表
lock(departmentid
sql keyword" style="white-space:Nowrap; list-style:none; font-family:Consolas,dt datetime)
go
--因为函数中不可以用getdate,所以用个视图,得到当前时间
view
v_getdate
as
dt=getdate()
go
--创建自定义函数,判断记录是否锁定
function
f_chk(@departmentid
)
returns
bit
as
begin
declare
@re
bit
sql plain" style="white-space:Nowrap; list-style:none; font-family:Consolas,@dt datetime
@dt=dt
v_getdate
lock
departmentid=@departmentid
sql color1" style="white-space:Nowrap; list-style:none; font-family:Consolas,dt,@dt)<5)
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。