MySQL语言之TCL(Transation Control Language):事务控制语言

本文深入探讨了数据库事务的四大核心特性(ACID),包括原子性、一致性、隔离性和持久性,通过具体实例阐述了这些特性如何确保数据的完整性和事务处理的可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务:

只有DML操作会触发一个事务。 存储引擎(ENGINE):就是指表类型.  当存储引擎为innodb时,才支持事务。有一个默认的存储引擎为Myisam。不支持事务。
对于事务,我们要保证事务的完整性。要么成功。  要么撤回 。

 一般情况下事务要符合四个条件(ACID):

原子性(Atomicity):事务要么成功,要么撤回。不可切割性。

一致性(Consistency):事务开始前和结束后,要保证数据的一致性。
   例如: 转账前账号A和账号B的钱的总数为10000;
    转账后账号A和账号B的前的总数应该还是10000;

隔离性(Isolation):
        当涉及到多用户操作同一张表时,数据库为会
    每一个用户开启一个事务。那么当其中一个事务正在
    进行时,其他事务应该处于等待状态。保证事务之间
    不会受影响。

持久性(Durability):
        当一个事务被提交后,我们要保证数据库里的
    数据是永久改变的。即使数据库崩溃了,我们也要
    保证事务的完整性。

  事务的验证:
   第一步:start transaction
   第二步:savepoint 保存点名称。
   第三步:DML
   第四步:commit/rollback;

首先第一步:登录数据库用户

第二步:创建一个新的数据库用户 scott

 

第三步:在root给用户中给新建的数据库用户授权,否则新建的数据库中没有你所需要的数据库,所以需要给予一些权限。

第四步:开启一个事物,并更改bd1802数据库中emp表的一个信息

以上四条都是在root用户中进行操作!

第五步:登录新建的数据库用户:

第六步:开启一个新的事务。

第七步:设置使用哪一个数据库。由于在root用户中对scott用户进行了授权,也就是说scott用户中有了bd1802这个数据库。

以上三步都是在scott用户中进行操作。

解析:我使用了两个数据库用户来操作了同一张表,我首先在root用户中先更改了emp表中的一个信息,但是并没有提交,所以如第七步,scott用户一直在等待我commit(提交)

如果我提交了root用户中的操作,会产生如下效果:

root用户中commit或者rockback(撤回)都可以

scott才会结束等待:

注意:当root用户先提交之后在root用户中查询更改的值发现是2000;

当scott用户操作完成并没有提交时,在scott用户中查询更改的值时是300;在root用户中查还是2000;

但是当scott用户提交完成之后再在root用户中查询更改的值就会变成300;

以上操作所解释的就是事务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值