MySQL 能否依次执行 SQL:先执行 SQL 甲,甲执行成功,再执行 SQL 乙;如果 SQL 甲执行失败,则放弃执行乙

2015-12-23 17:27:31 +08:00
 Nixus

我知道事务处理可以做到,但是,事务比较适合处理一条数据的情况;

如果有一堆数据,需要做这样的操作,该如何实现呢?

如果有一堆数据,通过遍历来实现,那不是要不停的开启 /关闭事务,效率肯定会大幅下降的,即使遍历前开启事务,遍历后 commit/rollback ,那对数据库的操作也是挺大的

求解决办法

2731 次点击
所在节点    MySQL
6 条回复
young
2015-12-23 17:48:34 +08:00
建议去看一下 mysql 的事务文档, 可以部分提交 /回滚
magnetoeric
2015-12-23 17:55:13 +08:00
mysql savepoint
Nixus
2015-12-23 17:56:52 +08:00
@young 能否获得被回滚的数据呢?
qhxin
2015-12-23 17:59:40 +08:00
一堆数据也可以啊,合理规划不会影响效率的,具体情况具体分析
elgoog1970
2015-12-23 18:28:59 +08:00
mysql 事务
mko0okmko0
2015-12-23 18:37:35 +08:00
假设这个 甲 有点大量.
不要用交易:
但需要多一个整数栏位(假设是 ipath).预设 null.
开始甲之前,取得一个本日豪秒或是格林威治千分秒数.反正需要一个不可能重复的数字.
汇入 甲的时候此栏放入这个数字.代表这一批 甲 的批次编号.
汇完甲后,检查此批的数量是否正确:
count(ipath) as cnt where ipath=批号
如果正确:执行 乙 .
不正确:删除 ipath=批号 的纪录.

如果跑完 乙 ,不需要 ipath 这栏了.删除栏位.

其实交易处理这个真的很好用阿.不然交易是拿来看的吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/245659

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX