事务

事务具有以下四个标准属性,通常由首字母缩写ACID简称:

原子: 确保工作单元中的所有操作都成功完成; 否则,该事务被中止的故障点,操作回滚到操作之前的状态。
一致性: 确保数据库正确后成功提交事务更改状态。
**隔离: **事务操作彼此独立和透明。
持久性: 可确保提交的事务的结果或仍然存在系统故障的情况下的作用。

1.COMMIT命令:

COMMIT命令是用于保存由事务引用的数据库改变的事务命令。
COMMIT命令保存所有事务在数据库自上次COMMIT或ROLLBACK命令。
COMMIT命令的语法如下:

COMMIT;

删除age = 25的记录,然后提交更改在数据库中的例子。

SQL> DELETE FROM CUSTOMERS
     WHERE AGE = 25;
SQL> COMMIT;

2.ROLLBACK命令:

ROLLBACK命令是用来撤消尚未被保存到数据库事务的事务命令。
ROLLBACK命令只能撤消事务,因为发出的最后一个COMMIT或ROLLBACK命令。
ROLLBACK命令的语法如下:

SQL> DELETE FROM CUSTOMERS
     WHERE AGE = 25;
SQL> ROLLBACK;

3.保存点SAVEPOINT

可以回滚事务到某一事务节点,而不回滚整个事务。
SAVEPOINT命令的语法如下:

SAVEPOINT SAVEPOINT_NAME;

考虑CUSTOMERS表具有以下记录:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

现在,这里是一系列操作:

SQL> SAVEPOINT SP1;
Saveyiibai created.
SQL> DELETE FROM CUSTOMERS WHERE ID=1;
1 row deleted.
SQL> SAVEPOINT SP2;
Saveyiibai created.
SQL> DELETE FROM CUSTOMERS WHERE ID=2;
1 row deleted.
SQL> SAVEPOINT SP3;
Saveyiibai created.
SQL> DELETE FROM CUSTOMERS WHERE ID=3;
1 row deleted.

现在,这三个删除已经发生,假设你要改变主意,决定回滚到标识为SP2的SAVEPOINT。 由于SP2在之后第一个删除被创建,最后两个删除都被撤消:

SQL> ROLLBACK TO SP2;
Rollback complete.

请注意,只有第一个删除发生,因为它回滚到SP2:

SQL> SELECT * FROM CUSTOMERS;
+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+
6 rows selected.

3.RELEASE SAVEPOINT命令:

RELEASE SAVEPOINT命令用于删除已经创建的一个SAVEPOINT。

RELEASE SAVEPOINT的语法如下:

RELEASE SAVEPOINT SAVEPOINT_NAME;

4.SET TRANSACTION 命令:

SET TRANSACTION命令可以被用来启动一个数据库事务。该命令用于指定随后的事务特性。

例如,可以指定一个事务是只读的,或读写。
SET TRANSACTION的语法如下:

SET TRANSACTION [ READ WRITE | READ ONLY ];

只读事务
在整个事务中的数据在事务开始时就决定,即使有其他会话在事务周期内修改并提交数据,也不会影响事务。可以认为在只读事务周期内,其他事务的对数据的改变就像不存在一样。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在生活中,我们时常会遇到一系列连续不可中断的事情。例如会计记账时,有借必有贷,借贷必相等;又如从 ATM 取钱时,...
    Kerwong阅读 1,382评论 0 4
  • 导语:计算机硬件在飞速发展,数据规模在急速膨胀,但是数据库仍然使用是十年以前的架构体系,WiredTiger 尝试...
    isgiker阅读 3,460评论 0 7
  • 本文包括:1、事务概念2、MySQL管理事务3、JDBC控制事务进程4、事务的特性(ACID)5、事务的隔离级别6...
    廖少少阅读 859评论 0 3
  • MySQL 支持对 MyISAM 和 MEMORY 存储引擎的表进行表级锁定,对 BDB 存储引擎的表进行页级锁定...
    微日月阅读 1,310评论 0 1
  • 高二的暑假,同学骑行到山西,我说我去找你玩吧,于是一路南下,我却到了陕西。为何一路南下?没错,我住在传说中的内蒙古...
    煤球2号阅读 598评论 0 0