V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
Nixus
V2EX  ›  MySQL

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

  •  
  •   Nixus · Dec 23, 2015 · 3251 views
    This topic created in 3778 days ago, the information mentioned may be changed or developed.

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

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

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

    求解决办法

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

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

    其实交易处理这个真的很好用阿.不然交易是拿来看的吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6112 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 02:10 · PVG 10:10 · LAX 19:10 · JFK 22:10
    ♥ Do have faith in what you're doing.