首页 > 数据库 >数据库第十三次作业 事务管理【带源码】

数据库第十三次作业 事务管理【带源码】

时间:2022-10-14 17:34:42浏览次数:49  
标签:事务管理 account set name money update 源码 第十三次 100


目录

​一、新建数据库​

​二、事务的提交​

​ 1.事务的隔离级别​

​1.1脏读 ​

​1.2演示脏读 ​

​1.3设置b账户中事务的隔离级别 ​

​1.4.验证是否出现脏读 ​

​2.不可重复性 ​

​2.1演示不可重复性 ​

​2.2设置b账户中事务的隔离级别 ​

​2.3验证是否出现不可重复读 ​

​3.幻读 ​

​ 3.1设置b账户中事务的隔离级别 ​

​3.2演示幻读 ​

​3.3重新设置账户的隔离级别 ​

​3.4验证是否出现幻读 ​

​4.可串行化 ​

​4.1设置b账户中事务的隔离级别  ​

​4.2演示可串行化 ​

​4.3提交事务 ​


 

一、新建数据库

数据库第十三次作业 事务管理【带源码】_隔离级别

create database chapter06;

use chapter06;

create table account(

    -> id int primary key auto_increment,

    -> name varchar(40),

    -> money float

-> );

insert into account(name,money) values

    -> ('a',1000),

-> ('b',1000);

数据库第十三次作业 事务管理【带源码】_隔离级别_02

数据库第十三次作业 事务管理【带源码】_mysql_03

二、事务的提交

数据库第十三次作业 事务管理【带源码】_mysql_04

start transaction;

update account set money=money-100 where name='a';

-> update account set money=money+100 where name='b';

commit;/

数据库第十三次作业 事务管理【带源码】_sql_05

数据库第十三次作业 事务管理【带源码】_数据库_06

数据库第十三次作业 事务管理【带源码】_数据库_07

update account set money=money+100 where name='a';

-> update account set money=money-100 where name='b';

数据库第十三次作业 事务管理【带源码】_数据库_08

数据库第十三次作业 事务管理【带源码】_数据库_09

select * from account;

数据库第十三次作业 事务管理【带源码】_mysql_10

数据库第十三次作业 事务管理【带源码】_数据库_11

update account set money=money+100 where name='a';

    -> update account set money=money-100 where name='b';

-> commit/

数据库第十三次作业 事务管理【带源码】_隔离级别_12

数据库第十三次作业 事务管理【带源码】_mysql_13

 

数据库第十三次作业 事务管理【带源码】_mysql_14

start transaction/

update account set money=money-100 where name='a';

-> update account set money=money+100 where name='b';

数据库第十三次作业 事务管理【带源码】_database_15

rollback;/

数据库第十三次作业 事务管理【带源码】_数据库_16

 1.事务的隔离级别

数据库第十三次作业 事务管理【带源码】_sql_17

1.1脏读 

数据库第十三次作业 事务管理【带源码】_数据库_18

数据库第十三次作业 事务管理【带源码】_数据库_19

set session transaction isolation level read uncommitted;

select @@transaction_isolation;

数据库第十三次作业 事务管理【带源码】_sql_20

1.2演示脏读 

数据库第十三次作业 事务管理【带源码】_sql_21

数据库第十三次作业 事务管理【带源码】_mysql_22

数据库第十三次作业 事务管理【带源码】_隔离级别_23

start transaction;

    -> update account set money=money-100 where name='a';

    -> update account set money=money+100 where name='b';

-> /

数据库第十三次作业 事务管理【带源码】_sql_24

数据库第十三次作业 事务管理【带源码】_隔离级别_25

数据库第十三次作业 事务管理【带源码】_mysql_26

1.3设置b账户中事务的隔离级别 

数据库第十三次作业 事务管理【带源码】_mysql_27

set session transaction isolation level read committed;

数据库第十三次作业 事务管理【带源码】_sql_28

1.4.验证是否出现脏读 

数据库第十三次作业 事务管理【带源码】_database_29

数据库第十三次作业 事务管理【带源码】_mysql_30

数据库第十三次作业 事务管理【带源码】_隔离级别_31

start transaction;

    -> update account set money=money-100 where name='a';

    -> update account set money=money+100 where name='b';

-> /

数据库第十三次作业 事务管理【带源码】_隔离级别_32

数据库第十三次作业 事务管理【带源码】_mysql_33

数据库第十三次作业 事务管理【带源码】_数据库_34

2.不可重复性 

数据库第十三次作业 事务管理【带源码】_隔离级别_35

2.1演示不可重复性 

数据库第十三次作业 事务管理【带源码】_sql_36

start transaction;

select * from account;

数据库第十三次作业 事务管理【带源码】_隔离级别_37

数据库第十三次作业 事务管理【带源码】_database_38

update account set money=money-100 where name='a';

数据库第十三次作业 事务管理【带源码】_sql_39

数据库第十三次作业 事务管理【带源码】_sql_40

数据库第十三次作业 事务管理【带源码】_database_41

数据库第十三次作业 事务管理【带源码】_隔离级别_42

数据库第十三次作业 事务管理【带源码】_隔离级别_43

2.2设置b账户中事务的隔离级别 

数据库第十三次作业 事务管理【带源码】_隔离级别_44

set session transaction isolation level repeatable read;

数据库第十三次作业 事务管理【带源码】_隔离级别_45

2.3验证是否出现不可重复读 

数据库第十三次作业 事务管理【带源码】_sql_46

数据库第十三次作业 事务管理【带源码】_database_47

数据库第十三次作业 事务管理【带源码】_database_48

update account set money=money-100 where name='a';/

数据库第十三次作业 事务管理【带源码】_database_49

数据库第十三次作业 事务管理【带源码】_database_50

数据库第十三次作业 事务管理【带源码】_隔离级别_51

3.幻读 

数据库第十三次作业 事务管理【带源码】_mysql_52

 3.1设置b账户中事务的隔离级别 

数据库第十三次作业 事务管理【带源码】_数据库_53

set session transaction isolation level read committed;

数据库第十三次作业 事务管理【带源码】_database_54

3.2演示幻读 

数据库第十三次作业 事务管理【带源码】_隔离级别_55

数据库第十三次作业 事务管理【带源码】_数据库_56

数据库第十三次作业 事务管理【带源码】_database_57

数据库第十三次作业 事务管理【带源码】_mysql_58

数据库第十三次作业 事务管理【带源码】_隔离级别_59

insert into account(name,money) values

-> ('c',1000);

数据库第十三次作业 事务管理【带源码】_database_60

数据库第十三次作业 事务管理【带源码】_mysql_61

数据库第十三次作业 事务管理【带源码】_sql_62

3.3重新设置账户的隔离级别 

数据库第十三次作业 事务管理【带源码】_隔离级别_63

set session transaction isolation level repeatable read;

数据库第十三次作业 事务管理【带源码】_数据库_64

3.4验证是否出现幻读 

数据库第十三次作业 事务管理【带源码】_数据库_65

数据库第十三次作业 事务管理【带源码】_隔离级别_66

数据库第十三次作业 事务管理【带源码】_数据库_67

数据库第十三次作业 事务管理【带源码】_mysql_68

数据库第十三次作业 事务管理【带源码】_隔离级别_69

insert into account(name,money) values('d',1000);

数据库第十三次作业 事务管理【带源码】_隔离级别_70

数据库第十三次作业 事务管理【带源码】_隔离级别_71

数据库第十三次作业 事务管理【带源码】_数据库_72

数据库第十三次作业 事务管理【带源码】_mysql_73

数据库第十三次作业 事务管理【带源码】_database_74

4.可串行化 

4.1设置b账户中事务的隔离级别  

数据库第十三次作业 事务管理【带源码】_隔离级别_75

set session transaction isolation level serializable;

数据库第十三次作业 事务管理【带源码】_sql_76

4.2演示可串行化 

数据库第十三次作业 事务管理【带源码】_隔离级别_77

数据库第十三次作业 事务管理【带源码】_mysql_78

数据库第十三次作业 事务管理【带源码】_隔离级别_79

insert into account(name,money) values('e',1000);

数据库第十三次作业 事务管理【带源码】_数据库_80

4.3提交事务 

数据库第十三次作业 事务管理【带源码】_数据库_81

数据库第十三次作业 事务管理【带源码】_mysql_82

数据库第十三次作业 事务管理【带源码】_sql_83

标签:事务管理,account,set,name,money,update,源码,第十三次,100
From: https://blog.51cto.com/u_15829839/5757550

相关文章