首页 新闻 会员 周边

为什么我在代码里开了事务后,再调用mysql的存储过程,存储过程并不在我开启的事务里执行?

0
悬赏园豆:10 [已解决问题] 解决于 2013-09-03 21:54

为什么我在代码里开了事务后,再调用mysql的存储过程,存储过程并不在我开启的事务里执行?

程序媛鼓励师的主页 程序媛鼓励师 | 初学一级 | 园豆:187
提问于:2013-09-02 13:47
< >
分享
最佳答案
0

在代码中是如何开事务的?

收获园豆:10
dudu | 高人七级 |园豆:30994 | 2013-09-02 21:32

大概是这样,不在公司,所以不能贴上代码:

conn.open()

trans= conn.BeginTransaction();

cmd.Transaction = trans;

....

程序媛鼓励师 | 园豆:187 (初学一级) | 2013-09-02 21:41

@编程笨笨: 

如果不用存储过程,直接用SQL语句,在不在事务中呢?

dudu | 园豆:30994 (高人七级) | 2013-09-02 21:48

@dudu: 直接用sql是可以的。 

程序媛鼓励师 | 园豆:187 (初学一级) | 2013-09-03 20:08

@编程笨笨: 那可能是不支持存储过程,为何不将事务直接写在存储过程中

dudu | 园豆:30994 (高人七级) | 2013-09-03 20:57

@dudu: 不想把业务逻辑放存储过程中,我的存储过程只是做表中的某一列按行加+1,但是要保证在一个事务中。记得在SqlServer里是没问题的,mysql里不太懂。我已经放弃用存储过程了,直接在代码里拼凑sql语句。

程序媛鼓励师 | 园豆:187 (初学一级) | 2013-09-03 21:28

@编程笨笨: 

如果用Entity Framework就不会有这样的问题

dudu | 园豆:30994 (高人七级) | 2013-09-03 21:35

@dudu: 是的,entity framework操作的是对象,最后才提交。 不过直接写sql执行效率高点。

程序媛鼓励师 | 园豆:187 (初学一级) | 2013-09-03 21:47

@编程笨笨: 执行效率相差很小,可以忽略

dudu | 园豆:30994 (高人七级) | 2013-09-03 21:57

@dudu: 嗯,用entity framework好处多多,方便维护,不用管下面是什么数据库了,也不用写sql。看具体情况吧。谢谢了!

程序媛鼓励师 | 园豆:187 (初学一级) | 2013-09-03 22:03
其他回答(1)
0

那在哪儿执行了?

捂汗 | 园豆:168 (初学一级) | 2013-09-02 17:52

应该是它自己的事务吧

支持(0) 反对(0) 程序媛鼓励师 | 园豆:187 (初学一级) | 2013-09-02 17:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册