数据库高级操作——事务

2019-03-30  本文已影响0人  Harper324

事务

数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么完全地不执行。MySQL事务主要用于处理操作量大,复杂度高的数据。

一、事物的四个属性(ACID)

二、事务控制语句

三、MYSQL 事务处理

1、用 BEGIN, ROLLBACK, COMMIT来实现
2、直接用 SET 来改变 MySQL 的自动提交模式:

例子:

示例表:学生表(student):

id name age sex
1 张三 18
2 李四 20
id student_id subject_id score
1 1 1001 80
2 2 1002 60
3 1 1001 70
4 2 1002 60.5
# 给学生表和成绩表里面同时插入一条记录:
BEGIN;

INSERT INTO student VALUES(3,'王五',19,'女');

INSERT INTO score VALUES(5,3,89,1001);

COMMIT;


mysql> select*from student;
+----+------+-----+------+
| id | name | age | sex  |
+----+------+-----+------+
|  1 | 张三 |  18 | 男   |
|  2 | 李四 |  20 | 女   |
|  3 | 王五 |  19 | 女   |
+----+------+-----+------+
3 rows in set (0.07 sec)

#使用回滚
BEGIN;

INSERT INTO student VALUES(4,'李敏',19,'女');

rollback;

mysql> select*from student;
+----+------+-----+------+
| id | name | age | sex  |
+----+------+-----+------+
|  1 | 张三 |  18 | 男   |
|  2 | 李四 |  20 | 女   |
|  3 | 王五 |  19 | 女   |
+----+------+-----+------+
3 rows in set (0.07 sec)

#设置非自动提交
SET AUTOCOMMIT=0;
BEGIN;
INSERT INTO student VALUES(4,'夏雨',20,'女');
INSERT INTO score VALUES(6,4,99,1001);
COMMIT;

mysql> select*from student;
+----+------+-----+------+
| id | name | age | sex  |
+----+------+-----+------+
|  1 | 张三 |  18 | 男   |
|  2 | 李四 |  20 | 女   |
|  3 | 王五 |  19 | 女   |
|  4 | 夏雨 |  20 | 女   |
+----+------+-----+------+
3 rows in set (0.07 sec)


上一篇 下一篇

猜你喜欢

热点阅读