首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

纠结,数据库回滚机制,中间要用查询,报错误

2012-09-22 
纠结,数据库回滚机制,中间要用查询,报异常用户点一下插入,要向几个表里分别插入数据,所以需要rollback机

纠结,数据库回滚机制,中间要用查询,报异常
用户点一下"插入",要向几个表里分别插入数据,所以需要rollback机制。

大致想法是这样的
try{
 transaction = connection.BeginTransaction();
向A表插入数据
向B表插入数据
……
transaction.Commit();
}
catch{
rollback
}

现在的问题来了
在向A表插入数据的时候,生成了一个ID,我要把这个ID作为参数,在B表里插入,
try{
 transaction = connection.BeginTransaction();
向A表插入数据
查询A表刚刚插入ID,用的是select SCOPE_IDENTITY(),这里报异常了
向B表插入数据
……
transaction.Commit();
}
catch{
rollback
}

异常信息是
如果分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务。命令的 Transaction 属性尚未初始化。


上网查了这个异常产生的原因是,在事务机制中,向A表插入数据,并没有真正的向A表插入呢,所以在这里查询,就是在查询脏数据,所以报异常

[解决办法]
请注意下:你这是一个事务而要进行两个大事件A和B,在A执行完后要COMMIT一下,否则A事件并没有真正执行。
[解决办法]
查询的时候也加事务就OK了

热点排行