mysql 事务

1:什么是事务

举例银行转账:

update t_act set balance=balance -10000 where actno='act-001'

update t_act set balance=balance+10000 where actno='act-002

#以上保证以上2条只能成功不能失败

2:DML语句,事务只用(insert,delete,update)

它们是用来改变数据的。

事务的存在是为了保证数据的安全性和完整性。

3:事务如何操作的?(commit,rollback)

开启事务

输入1(记录到缓存里历史记录里)

输入2(记录到缓存里历史记录里)

savepoint a1(先设置保存点)

输入3(记录到历史记录里)

提交事务(commit)或者回滚事务(rollback)(提交事务是更新硬盘,回滚事务不更新硬盘,而是清除历史数据。

4:事务的4大特质(ACID)

  A原子性  :atom

C一致性:consistance

I 隔离性:Isolation

D 持久性:duration

5:关于事务的隔离性

第一级别 read umcommitted(读未提交)也叫dirty read(所有数据都是二级别起步)

第二级别 read committed(读已提交)oracle默认

第三级别repeatable read(可重复读)解决了读已提交的问题。读取到的数据是幻想。mysql默认

第四级别序列化读/串行化读。

解决了所有问题,但是效率低。

6:显示事务

mysql事务默认是自动提交(任意一条DML语句都自动提交),但是如果引入事务,就能使用rollback.

 start transction;
Query OK, 0 rows affected (0.00 sec)

mysql> insert t_user(username) values('li'),('wu');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from t_user;
+----+----------+
| id | username |
+----+----------+
|  1 | zs       |
|  2 | li       |
|  3 | wu       |
+----+----------+
3 rows in set (0.00 sec)

mysql> rollback;
Query OK, 0 rows affected (0.02 sec)

mysql> select * from t_user;
+----+----------+
| id | username |

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t_user(username) values('wangwu'),('rose'),('jack');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> commite;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'commite' at line 1
mysql> commit;
Query OK, 0 rows affected (0.04 sec)

mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t_user;
+----+----------+
| id | username |
+----+----------+
|  1 | zs       |
|  4 | wangwu   |
|  5 | rose     |
|  6 | jack     |
+----+----------+
4 rows in set (0.00 sec)

7:使用2个事务演示隔离级别

1:read uncommited

2:read committed

3:repeatable read

4:set global transaction isolation level serializable;序列化,排序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值