我在 数据库访问层 添加事物 比如:数据访问层 添加事物 添加一条数据 用到存储过程spa_sys_add_user_rule,同时添加一条修改日志 用到存储过程 spa_sys_log .
try
{
db.addUserRule(...); --添加记录
db.addlog(...); ---添加日志
}
catch (Exception ex)
{
tran.Rollback(); --回滚事物
LogUtility.Add(ex); --捕获异常信息
isSuc = false;
}
finally
{
tran = null;
}
在存储过程 spa_sys_add_user_rule中(要向多张表 添加记录),由于约束限制,我在此存储过程中也使用了事物 格式如下:
CREATE proc [dbo].[spa_sys_add_user_rule]
@user_id int,
@rule_id int
as
begin
if not exists (select top 1 1from tb1 where [user_id]=@user_id and rule_id=@rule_id)
begin try
begin tran
insert into tb_1
insert into tb_2。。
commit tran
select 1
end try
begin catch
rollback
select -1
end catch
end我想问的是 :
要是在数据库 添加事物发生异常 捕获异常 事物回滚 并返回(select -1)
捕获到的异常 在数据访问层 会再次捕获到吗 ? 或者说 我存储过程中 是不是不应该再使用事物?
try
{
db.addUserRule(...); --添加记录
db.addlog(...); ---添加日志
}
catch (Exception ex)
{
tran.Rollback(); --回滚事物
LogUtility.Add(ex); --捕获异常信息
isSuc = false;
}
finally
{
tran = null;
}
在存储过程 spa_sys_add_user_rule中(要向多张表 添加记录),由于约束限制,我在此存储过程中也使用了事物 格式如下:
CREATE proc [dbo].[spa_sys_add_user_rule]
@user_id int,
@rule_id int
as
begin
if not exists (select top 1 1from tb1 where [user_id]=@user_id and rule_id=@rule_id)
begin try
begin tran
insert into tb_1
insert into tb_2。。
commit tran
select 1
end try
begin catch
rollback
select -1
end catch
end我想问的是 :
要是在数据库 添加事物发生异常 捕获异常 事物回滚 并返回(select -1)
捕获到的异常 在数据访问层 会再次捕获到吗 ? 或者说 我存储过程中 是不是不应该再使用事物?
解决方案 »
- Sql Server 变态问题求救(删除数据库同名用户的问题)[给分帖,zjcxc(邹建) 请进][内有未解决问题,如有人能解惑另外开贴给分]
- 求一个语句的写法!
- 这个存储过程居然不对?
- SQL ,三表内关联问题
- 在恢复数据库时提示磁盘空间不够是为什么?磁盘空间肯定够
- 将TXT按固定长度导入到sql中
- '正在装载'是什么意思?各位高手请进!
- 怎样通过sql得到一个表的索引列的名称?
- 存储过程在web应用中是否影响速度
- 客户端远程telnet SQL SERVER2008不通,请高手赐教
- 我Telnet 服务器IP,1433时出现遗失对主机的连接,怎么回事?
- 存储过程里大量使用临时表的优缺点?请指教
我试过asp通过ado定义事务的效率要低于数据库端的事务处理效率(比如通过存储过程)
具体的机制没研究过,我的想法是两个里选一个 一个是给程序员用的,一个是给数据库开发人员用的