MySql中怎么创建事务?

解决方案 »

  1. 1. innodb的表引擎才支持事务。
    2. 如果使用事务。你可以参考一下官主文档中的例子。http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-transaction-model
    http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#transactional-commands
    13.4. MySQL事务处理和锁定语句
    13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法
    13.4.2. 不能回滚的语句
    13.4.3. 会造成隐式提交的语句
    13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法
    13.4.5. LOCK TABLES和UNLOCK TABLES语法
    13.4.6. SET TRANSACTION语法
    13.4.7. XA事务
      

  2. mysql> select * from tester;
    +----+--------+--------------+--------+-------+--------+
    | ID | name   | address      | salary | grade | sex    |
    +----+--------+--------------+--------+-------+--------+
    |  1 | jason  | shenzhen     |   4500 |     6 | male   |
    |  2 | linkle | zhuhai       |   4000 |     5 | female |
    |  3 | leo    | zhuhai       |   3000 |     4 | male   |
    |  5 | steven | zhuhai_jinan |   5600 |     7 | male   |
    |  6 | jacky  | zhuhai       |   4000 |     5 | male   |
    +----+--------+--------------+--------+-------+--------+
    5 rows in set (0.00 sec)mysql> set autocommit=0;
    Query OK, 0 rows affected (0.00 sec)mysql> insert into tester values(7,'jack','HongKong',8000,10,'male');
    Query OK, 1 row affected (0.00 sec)mysql> rollback;
    Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> select * from tester;
    +----+--------+--------------+--------+-------+--------+
    | ID | name   | address      | salary | grade | sex    |
    +----+--------+--------------+--------+-------+--------+
    |  1 | jason  | shenzhen     |   4500 |     6 | male   |
    |  2 | linkle | zhuhai       |   4000 |     5 | female |
    |  3 | leo    | zhuhai       |   3000 |     4 | male   |
    |  5 | steven | zhuhai_jinan |   5600 |     7 | male   |
    |  6 | jacky  | zhuhai       |   4000 |     5 | male   |
    |  7 | jack   | HongKong     |   8000 |    10 | male   |
    +----+--------+--------------+--------+-------+--------+
    6 rows in set (0.00 sec) 按照上面的步骤rollback没有生效
    关于更多参考http://blog.csdn.net/nianzhang747/archive/2009/08/13/4441586.aspx
      

  3. start transaction;事务语句...commit(提交事务) 
    or 
    rollback(回滚事务)
      

类似问题 »