SQL怎么用事务

asd889839 2012-11-06 08:34:32

declare @RoleIDs table(RoleID int,RowNum int)
insert into @RoleIDs
select RoleID,row_number() over (order by RoleID desc) as RowNum from T_Role

declare @RoleCount int
select @RoleCount=count(RoleID) from T_Role

declare @i int
set @i=1
while @i< = @RoleCount --SQL不支持for循环,用while
begin
declare @NowRoleID int
select @NowRoleID=RoleID from @RoleIDs where RowNum=@i --遍历得到的当前RoleID
declare @ModuleIDs table(ModuleID int)
declare @RID int

set @RID=@NowRoleID --赋值

insert into @ModuleIDs
select ModuleID from T_Role_Module where RoleID=@RID

declare @Data table(RoleID int,PermisnID int,ModuleID int) insert into @Data
select @RID as RoleID,PermisnID,ModuleID from T_Module_Permisn where ModuleID in (select * from @ModuleIDs)
set @i=@i+1
end

delete from T_Role_Permisn
insert into T_Role_Permisn(RoleID,PermisnID,ModuleID) select * from @Data


成功返回1、失败返回-1
...全文
244 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
开启时代 2012-11-06
  • 打赏
  • 举报
回复
begin try
begin tran
--这里是你的语句
commit 
end try
begin catch
rollback 
end catch
以学习为目的 2012-11-06
  • 打赏
  • 举报
回复
定义一个变量,中途传入@@rowcount值,做判断呗
asd889839 2012-11-06
  • 打赏
  • 举报
回复


我想确保这个中途不出错
發糞塗牆 2012-11-06
  • 打赏
  • 举报
回复
你这个不关事务事吧。用@@rowcount来判断是否有影响行数咯,因为不成功,影响行数就为0,如果大于0,无论多少,都代表成功。然后你做判断嘛

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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