大家覺的這個事務要設的SET TRANSACTION ISOLATION LEVEL是哪個?

cgsun 2003-09-20 03:57:11
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
begin tran
if exists(select * from table1 where Tp='aa' and name=rtrim(@name))
begin
rollback tran
select 'error'

return
end
else
begin
insert table1
commit tran
select '1','succeful'
end
再insert table 時,看看有沒有這個name,如過沒有就insert
我覺的用SERIALIZABLE,是不是用的級別太高了.
我覺的以防止其他用户在事务完成之前更新数据集或将行插入数据集内
好像就只能用這個了.
...全文
60 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-09-22
  • 打赏
  • 举报
回复
如果你只是这些代码,这是滥用事务,你没有任何必要用事务处理。你完全可以省略你的事务代码。
sdhdy 2003-09-22
  • 打赏
  • 举报
回复
可以
cgsun 2003-09-22
  • 打赏
  • 举报
回复
有一张web页面,可以让你输入一个name,
但前提是在table中不存在这个name,
当A,B先后输入pengdali,pengdali,
A在if exists(select * from table1 where Tp='aa' and name=rtrim(@name))
begin
rollback tran
select 'error'

return
end
但还没有insert pengdali时,B会不会也已经
if exists(select * from table1 where Tp='aa' and name=rtrim(@name))
begin
rollback tran
select 'error'

return
end
了呢?这样一来,不就会insert 两笔pengdali了吗
happydreamer 2003-09-22
  • 打赏
  • 举报
回复
这里不需要自行设置事务级别

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧