一个存储过程能放在事务中大量执行吗

zx_0815 2020-05-21 01:34:10
我有一个存储过程如下所示,已创建
DROP PROCEDURE IF EXISTS insertIOVandPosData;
delimiter //
CREATE procedure insertIOVandPosData(
IN INtest_ID int,
IN INvelocity float,
IN INposition float)
begin
insert into iovandpos (test_ID,velocity,position) values (INtest_ID,INvelocity,INposition);
end
//
delimiter ;


然后在mfc里面调用他并插入大量数据,于是我就用了事务处理,代码如下
	IOVandPos data;
data.test_ID = 1;
data.position = 1;
data.velocity = 1;
char buf[200];
sprintf_s(buf, "CALL insertIOVandPosData(%d,%f,%f)", data.test_ID, data.position, data.velocity);
mysql_query(&mysql, "START TRANSACTION"); // 开启事务, 如果没有开启事务,那么效率会变得非常低下!
for (int i = 0; i < 1000; i++)
{
if (mysql_query(&mysql, buf)) //执行SQL语句
{
::MessageBox(NULL, _T("操作失败"), _T("提示"), NULL);

return 0;
}
}
mysql_query(&mysql, "COMMIT"); // 提交事务

这样操作是不会报错的,但是正常不应该是存入数据库1000条数据吗,可结果是数据库中只有一条而且最后那条数据(里面有个自动递增的主键能看出来,唯一的一条数据的主键值为1000),这就非常的让人难受了。。。有大佬解答下吗?
...全文
221 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
带我飞的云 2020-06-12
  • 打赏
  • 举报
回复
引用 楼主 qq_42741525 的回复:
我有一个存储过程如下所示,已创建
DROP PROCEDURE IF EXISTS insertIOVandPosData;
delimiter //
CREATE procedure insertIOVandPosData(
IN INtest_ID int,
IN INvelocity float,
IN INposition float)
begin
insert into iovandpos (test_ID,velocity,position) values (INtest_ID,INvelocity,INposition);
end
//
delimiter ;


然后在mfc里面调用他并插入大量数据,于是我就用了事务处理,代码如下
	IOVandPos data;
data.test_ID = 1;
data.position = 1;
data.velocity = 1;
char buf[200];
sprintf_s(buf, "CALL insertIOVandPosData(%d,%f,%f)", data.test_ID, data.position, data.velocity);
mysql_query(&mysql, "START TRANSACTION"); // 开启事务, 如果没有开启事务,那么效率会变得非常低下!
for (int i = 0; i < 1000; i++)
{
if (mysql_query(&mysql, buf)) //执行SQL语句
{
::MessageBox(NULL, _T("操作失败"), _T("提示"), NULL);

return 0;
}
}
mysql_query(&mysql, "COMMIT"); // 提交事务

这样操作是不会报错的,但是正常不应该是存入数据库1000条数据吗,可结果是数据库中只有一条而且最后那条数据(里面有个自动递增的主键能看出来,唯一的一条数据的主键值为1000),这就非常的让人难受了。。。有大佬解答下吗?


你这种调用方法不行,因为存储过程执行完,已经commit了
你外层的事务不起作用啊
宇峰科技 2020-06-06
  • 打赏
  • 举报
回复
执行一次,mysql_query(&mysql, buf)返回什么,执行一次就return 0了

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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