› 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
lxy
V2EX  ›  MySQL

关于事务查询问题

  •  
  •   lxy · Feb 29, 2016 · 2604 views
    This topic created in 3890 days ago, the information mentioned may be changed or developed.
    数据库 MySQL 。写了一段代码,程序大概是这样:

    开始事务;
    insert 数据 1; //合法数据。
    select 数据 1; //为什么这里能够查询得到数据 1 ?事务没提交的时候,就可以查询了?
    time.sleep(20); //使程序暂停。这时我在 Navicat 却查不到数据 1 ,这又是为什么?
    提交事务; //commit 。提交之后可以在 Navicat 中查到。
    lecher
        1
    lecher  
       Feb 29, 2016 via Android   ❤️ 1
    事务支持的是回滚,只要事务的 SQL 没有失败,自然都是成功。

    所以实际情况就是执行语句 1 ,成功之后执行语句 2 ,这时候当然可以查询到语句 1 的处理,如果语句 2 失败,就会回滚,做语句 1 的反操作将数据清除。
    b821025551b
        2
    b821025551b  
       Feb 29, 2016   ❤️ 1
    All operations in a single transaction are visible to each other.
    delavior
        3
    delavior  
       Feb 29, 2016
    在同一个连接中插入或更新数据后,即使未提交,在本连接中也是可以查询的;但是使用新连接是查不到的。
    yuriko
        4
    yuriko  
       Feb 29, 2016
    事务使得操作被打包,将几个操作原子化。
    对于事务内操作来说,并没有影响。
    对于事务失败,由于原子性,事务不可切割,所以表现为回滚。
    对于其他的事务或请求,由于原子性,只会表现为事务已执行或未执行中的一种。由于你事务还未提交,意味着可能还有后续操作,所以 nacicat 变现为事务未执行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2259 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:45 · PVG 18:45 · LAX 03:45 · JFK 06:45
    ♥ Do have faith in what you're doing.