时间:2021-07-01 10:21:17 帮助过:3人阅读
BEGIN 或 START TRANSACTION 显式地开启一个事务;
COMMIT 也可以使用 COMMIT WORK,不过二者是等价的。COMMIT 会提交事务,并使已对数据库进行的所有修改成为永久性的;
ROLLBACK 也可以使用 ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;
SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个保存点,一个事务中可以有多个 SAVEPOINT;
RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;
ROLLBACK TO identifier 把事务回滚到标记点;
SET TRANSACTION 用来设置事务的隔离级别。InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。
1、用 BEGIN, ROLLBACK, COMMIT来实现
2、直接用 SET 来改变 MySQL 的自动提交模式:
数据库事务操作实例:
数据库事务操作实例
- mysql<span style="color: #808080;">></span> <span style="color: #0000ff;">use</span><span style="color: #000000;"> RUNOOB;
- </span><span style="color: #0000ff;">Database</span><span style="color: #000000;"> changed
- mysql</span><span style="color: #808080;">></span> <span style="color: #0000ff;">CREATE</span> <span style="color: #0000ff;">TABLE</span> runoob_transaction_test( id <span style="color: #0000ff;">int</span>(<span style="color: #800000; font-weight: bold;">5</span>)) engine<span style="color: #808080;">=</span><span style="color: #000000;">innodb; # 创建数据表
- Query OK, </span><span style="color: #800000; font-weight: bold;">0</span> rows affected (<span style="color: #800000; font-weight: bold;">0.04</span><span style="color: #000000;"> sec)
- mysql</span><span style="color: #808080;">></span> <span style="color: #0000ff;">select</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">from</span><span style="color: #000000;"> runoob_transaction_test;
- Empty </span><span style="color: #0000ff;">set</span> (<span style="color: #800000; font-weight: bold;">0.01</span><span style="color: #000000;"> sec)
- mysql</span><span style="color: #808080;">></span> <span style="color: #0000ff;">begin</span><span style="color: #000000;">; # 开始事务
- Query OK, </span><span style="color: #800000; font-weight: bold;">0</span> rows affected (<span style="color: #800000; font-weight: bold;">0.00</span><span style="color: #000000;"> sec)
- mysql</span><span style="color: #808080;">></span> <span style="color: #0000ff;">insert</span> <span style="color: #0000ff;">into</span> runoob_transaction_test value(<span style="color: #800000; font-weight: bold;">5</span><span style="color: #000000;">);
- Query OK, </span><span style="color: #800000; font-weight: bold;">1</span> rows affected (<span style="color: #800000; font-weight: bold;">0.01</span><span style="color: #000000;"> sec)
- mysql</span><span style="color: #808080;">></span> <span style="color: #0000ff;">insert</span> <span style="color: #0000ff;">into</span> runoob_transaction_test value(<span style="color: #800000; font-weight: bold;">6</span><span style="color: #000000;">);
- Query OK, </span><span style="color: #800000; font-weight: bold;">1</span> rows affected (<span style="color: #800000; font-weight: bold;">0.00</span><span style="color: #000000;"> sec)
- mysql</span><span style="color: #808080;">></span> <span style="color: #0000ff;">commit</span><span style="color: #000000;">; # 提交事务
- Query OK, </span><span style="color: #800000; font-weight: bold;">0</span> rows affected (<span style="color: #800000; font-weight: bold;">0.01</span><span style="color: #000000;"> sec)
- mysql</span><span style="color: #808080;">></span> <span style="color: #0000ff;">select</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">from</span><span style="color: #000000;"> runoob_transaction_test;
- </span><span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">----+</span>
- <span style="color: #808080;">|</span> id <span style="color: #808080;">|</span>
- <span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">----+</span>
- <span style="color: #808080;">|</span> <span style="color: #800000; font-weight: bold;">5</span> <span style="color: #808080;">|</span>
- <span style="color: #808080;">|</span> <span style="color: #800000; font-weight: bold;">6</span> <span style="color: #808080;">|</span>
- <span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">----+</span>
- <span style="color: #800000; font-weight: bold;">2</span> rows <span style="color: #808080;">in</span> <span style="color: #0000ff;">set</span> (<span style="color: #800000; font-weight: bold;">0.01</span><span style="color: #000000;"> sec)
- mysql</span><span style="color: #808080;">></span> <span style="color: #0000ff;">begin</span><span style="color: #000000;">; # 开始事务
- Query OK, </span><span style="color: #800000; font-weight: bold;">0</span> rows affected (<span style="color: #800000; font-weight: bold;">0.00</span><span style="color: #000000;"> sec)
- mysql</span><span style="color: #808080;">></span> <span style="color: #0000ff;">insert</span> <span style="color: #0000ff;">into</span> runoob_transaction_test <span style="color: #0000ff;">values</span>(<span style="color: #800000; font-weight: bold;">7</span><span style="color: #000000;">);
- Query OK, </span><span style="color: #800000; font-weight: bold;">1</span> rows affected (<span style="color: #800000; font-weight: bold;">0.00</span><span style="color: #000000;"> sec)
- mysql</span><span style="color: #808080;">></span> <span style="color: #0000ff;">rollback</span><span style="color: #000000;">; # 回滚
- Query OK, </span><span style="color: #800000; font-weight: bold;">0</span> rows affected (<span style="color: #800000; font-weight: bold;">0.00</span><span style="color: #000000;"> sec)
- mysql</span><span style="color: #808080;">></span> <span style="color: #0000ff;">select</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">from</span><span style="color: #000000;"> runoob_transaction_test; # 因为回滚所以数据没有插入
- </span><span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">----+</span>
- <span style="color: #808080;">|</span> id <span style="color: #808080;">|</span>
- <span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">----+</span>
- <span style="color: #808080;">|</span> <span style="color: #800000; font-weight: bold;">5</span> <span style="color: #808080;">|</span>
- <span style="color: #808080;">|</span> <span style="color: #800000; font-weight: bold;">6</span> <span style="color: #808080;">|</span>
- <span style="color: #808080;">+</span><span style="color: #008080;">--</span><span style="color: #008080;">----+</span>
- <span style="color: #800000; font-weight: bold;">2</span> rows <span style="color: #808080;">in</span> <span style="color: #0000ff;">set</span> (<span style="color: #800000; font-weight: bold;">0.01</span><span style="color: #000000;"> sec)
- mysql</span><span style="color: #808080;">></span>
MySQL事务操作
标签:event 允许 处理 style table repeat 技术 指定 htm