00:00
好,那咱们关于这个显示事物和这个隐示事物啊,哎,咱们就说清楚了,然后接下来的话呢,咱们通过这个代码呢,来给大家呢,去做一个演示啊,通过代码层面呢,大家去体会一下我们开启事务啊,提交事务,还有这个回滚事务这样的一系列的这个行为,好,那这块呢,我们就回到这个代码层面呢,咱们去讲解一下啊,这个是咱们这个四啊,相当于是这个案例的一个分析啊。行,那这块呢,我们就举不同的这个例子啊,首先我们这个叫举例一啊,这个举例一之前的话呢,咱们先小心一点,咱们在刚才这个讲解的过程当中啊,咱们把这个set是否是改写成false了啊,比如这块呢,我们做一个查看啊,查看一下咱们当前的是一个off啊,这块呢,别影响我们当前这样的一个操作啊,啊因为上边这块我们已经改成false了,所以咱们还改成是咱们这个默认的行为啊,因为默认的这个诶变量的话呢,它其实是一个触的对吧?好,这个别影响我们现有的这样的一个操作了啊。也就是说呢,我们在这个默认的啊,这个情况下呢,我们去做这样的一个行为的操作啊,那么这个举例一的话呢,我们是这样子的啊,首先呢,我们这块呢,F5刷新一下啊,我们看看当前这里边有哪些表啊,咱们这块呢,就避开这些表,咱们呢去创建一个新的表啊,首先这块我们去use一下,叫艾特硅谷DB2这样的一个数据库没问题是吧?好,那么在这个数据库下呢,咱们去创建新的一张表啊create。
01:22
啊,这个我们来个table啊,叫USER3好,那这块呢,我们就简单一点啊,只有一个字段啊,我就叫做这个内了,那是一个water类型。啊,这个呢,我们来一个比如15个长度,哎,同时呢,我们把这个呢,字段就直接呢声明成咱们的这个主键了,诶大家也清楚这个主键呢意味着什么啊,它是一个唯一的对吧?而且呢,按照我们这个主件呢,是不是构建这个居溯索引啊好,那我们这块呢,去创建一下。啊,没有问题啊,那创建完以后的话呢,我们紧跟着的话呢,先做一个select from一下,我们这个叫USER3。啊,那毫无疑问,疑问的话呢,我们这张表里边呢,就没有任何的数据呗,毫无疑问是吧,好那么接下来的话呢,大家看啊,我们开启一个15啊,咱用这个比例了。
02:02
啊呢去开启一个事物啊,咱们以前呢,讲这个table啊,讲这个嗯,这个这个delete from的时候呢,咱们都用这个auto commit了,现在咱们就主要呢,拿这个显示的去开启事物来给大家讲解啊,在begin当中啊,咱们就先insert into一下到这个a user3里边。哎,我叫values,咱们来一个这个叫张三吧。来添加这样一条数据对吧。好,那这时候我们做一个begin啊,开启我们这个事物了,然后呢,Insert into啊也执行了,那这时候呢,Ins into问大家一句,它还会去自动提交数据吗?哎,显然的时候不会啦,哎,此时不会啊,自动。啊,提交数据。诶,这时候呢,它不会自动提交数据,不是因为我们说的奥commit的事儿,是因为我们前面呢加了个begin对吧?诶刚才咱们上面不是讲这两个事了吗。啊,讲这个事儿了是吧,好,那么在我们添加完以后的话呢,我们再去做一个select啊,显然的话呢,这时候就有张三了。
03:02
啊,那当然了,我们这时候呢,如果来一个的话,哎,相当于我们就把这个事物呢,是不是给他做了一个提交了啊,那提交以后的话呢,相当于他就持久化下来了啊,那这时候呢,张三就相当于大家理解为呢,就是刷盘到我们这个磁盘当中了。啊,这个事呢,就确定下来持久化的了,行,这是一个,然后呢,紧跟着的话呢,我们再来一个比begin啊,大家知道意味着什么,是不是我们相当于开启了一个新的事物了啊,开启一个新的这个事物啊好在开启这个新的事物当中呢,我们再去做一个insert。啊,这时候呢,我避开啊,我这时候呢,叫这个添加一个李四。啊,这时候我们,诶这个我没执行了啊,Begin一下,诶然后的话呢,我们去insert into啊,咱们走起,诶相当于呢,就添加了一条记录对吧,那么添加完这条记录以后的话呢,我们去查肯定是有李四了啊,这个我就不查了,然后我再去INSERT1条记录。哎,但是你看啊,那这是我们在隐私的话呢,就报错了,哎,这个主要是因为呢,是我们受到这个主见的一个影响啊。哎受哎逐渐的一个影响。
04:04
哎,主见约束里边呢,要求你的字段是唯一的是吧?哎,不能添加成功。才成功啊,那么这时候呢,相当于就是我们从这个呃,事物的一个状态上来讲呢,咱们提到过一个状态,是不是叫失败的这个状态,哎,相当于他这时候呢,就是一个失败的状态,对吧?那么在这个状态下的话呢,诶,大家你注意啊,我去执行这个叫back。啊,你看哈,我执行一下这个。嗯,那么我问一下啊,我现在要是写那个星的话呢,有几条记录啊。哎,我们这说是不是这是一条,然后这是不是也一条,相当于现在我,诶这一条呢,没加没加入成功,相当于此时我们去select的话呢,应该是不是有张三李四对吧,但是的话呢,我要做一个roll back呢。是不是要回滚到最后一次commit之后,哎,最后的一次commit啊,注意这时候呢,他不会去commit了,因为我们是在事物里的,跟上面这个原因是一样的,对吧?好,那么这时候呢,诶,我们要是不是这是这一次之后了G呢,我们这条数据呢,是不是就回滚了啊,所以说呢,在我们这个roll back以后,诶我要是执行这个selecting的话呢,是不是就只有张三了吧。
05:06
哎,这个大家体会一下啊,诶这呢,就我们说的这两个场景啊,两个事物啊,里边呢,有添加失败的时候呢,我们的roll back行为啊,这个呢,可以看作是咱们的这个叫情况一吧。哎,我在这写一下啊,看情况一啊,因为呢,为啥叫情况一,你咋不叫一个举例二呢,因为我们这里边呢,很相似哈,所以我就都归到一个这个案例里边了,好接着我们来看下这个叫情况二啊,这个当前我们这个U3里边呢,是有这个数据的啊,咱们希望呢,就剥离这个数据的一个影响,所以呢,我们就先来一个叫创table。啊创table呢,这个U33相当于呢,把我们这个U33表里边这个数据啊,就全部给清除掉啊,那么咱们讲这个上的时候呢,提到过啊,这个叫DDL,它的这个操作呢,是不是,呃,会啊,自动提交数据是吧,不受咱们的这个叫I auto哎,Commit这个变量的影响,对吧?哎,这个大家注意一下,言G呢,就是我们这条操作执行完以后的话呢,不管你前面这块呢,有没有auto commit是false啊,总之呢,它一定会提交数据。
06:09
所以这块呢,有一个提交的行为啊,那么接下来的话呢,我们首先呢,去select星查看一下呢,就没有任何数据了,好那么在这个场景下呢,诶,我把刚才这个操作呢,咱们再补充一下啊,我还是原封不动的拿过来,我们呢先去开启一个呃事物,然后呢往这个呃表里边呢,我们加入了一个张三。哎,其实就有张三了,那这时候你select星的话呢,是不是肯定有张三是吧?好,那么接下来的话呢,我做了一个commit的行为,1IG的话呢,我们这个张三呢,就持久化到我们这个数据库当中了。啊,这个磁盘当中是吧,就有这个数据了。然后呢,区别呢,大家注意看哈,下边的话呢,我上来就直接呢去隐私into了,我没有再去使用一个begin。啊,我没有使用丙根,上来呢,就直接引40INTO,好来,我们走起。啊,那么执行完以后的话呢,呃,这时候我们如果做一个查看的话呢,肯定这时候是不是张三李四都有对吧?啊都有啊然后的话呢,我们再去诶做一个隐私的into啊,那显然呢,这时候呢,是不是又报错了。
07:10
诶意味着就我们这个呢,其实又是一个失败的一个状况啊,没有添加成功,所以呢,你要是去select星的话呢,显然呢,是不是还是只有张三李四是吧,好,那么现在的关键情况呢,就是在于我此时呢去执行一个叫back。好,大家看啊,我现在要去roll back的话呢,呃,问的问题就是说我们现在这个去查看里边表中的数据,诶这时候呢,是有谁呢。啊,有谁啊,来,我们走一下。哎,你看有张三是不是也有李四啊,哎,这个跟大家哎想的是一样的嘛,啊为什么是这样的呢?哎为什么跟上面不一样的呢?因为上面我们有个begin呀,哎咱们上面有begin跟这个没有begin的区别是什么呢?诶就是咱们前面提到的啊说如果我们默认情况下呢,这个DMR这个操作呢,它是会自动提交数据的,但是你要前面加了比begin以后呢,他就不提交了。
08:00
哎,就是我们说的这个情况是吧,你现在要是没有begin的话呢,咱们就是说呢,默认情况下。哎,默认。哎,这样写啊,哎默认情况下,哎,我们说的这个DML这个操作,哎是不是也会,哎自动提交数据啊。来提交这个数据,那这里边儿所谓的这个默认情况是什么呢?呃,其实啊,或者叫及。啊,咱们这个叫auto,哎commit哎相当于呢,是不是它是一个处的这个情况呀。诶为诶这个处,哎,这就我们所谓的这个默认情况啊,哎,因为呢,这时候你没有比begin了,所以呢,我们此时这个隐色完以后的话呢,它其实是不是就自动提交了,现在李四呢也给持久化了,然后呢,你这条语句呢,执行的时候失败了啊失败的话呢,它就相当于是。呃,这个的就没有保存成功,那你这块呢,Roll back的话呢,其实呢,这块呢,相当于这条依据呢,相当于诶类似于就像回归啊,其实本身也没写入嘛,是吧,诶相当于它呢,就是所谓的这个失败的啊,我们所谓的讲的叫是叫最近的一次commit之后,那你最近的一次commit呢,其实相当于应该是在我们这个语句之后了。
09:11
啊OK,哎,所以呢,这个时候。啊,或者大家理解呢,这个就是我们所谓的叫事物是一个失败的状态是吧,哎,是失败的。看这个这个状态啊状态,哎,然后这时候呢,你做一个roll back呢,相当于是哎就结束了它这个事物的一个,就这个事物呢,失败状态,它这个临时状态,咱们讲这块的时候,我们看。讲这个事物的状态的时候呢,这个失败的状态,它是个临时状态,然后我们使用了一个叫roll back,相当于是不是就把它给终止了,对吧?诶回滚到这个最初的这个状态,那就回滚到这儿了,诶所以里边呢,是有这个李四的,还是这个李四啊行,这个呢,是咱们说的这个,哎,情况二啊,然后呢,接着我们再说一下,这个叫情况三啊。这个情况三的话呢,我们也是啊先呢做一个tnket table。啊,把之前这个数据呢,咱们都先这个清一清是吧,清一清,然后的话呢,我们再去执行一个叫select清from这个USER3。
10:05
啊,这个都没有了啊,这没问题是吧?好然后呢,我们还是一个这样的一个行为啊,其实跟我们整体这个来讲呢,是类似的啊CTRL一下。然后这块呢,我们这个先暂时呢都把这些呢都删一删啊,哎通过这块的话呢,我们来说一下这个其中一个变量的一个使用啊,这个变量是什么呢?哎,我在这个位置啊,哎在我们一开始执行这个begin第一个事务之前啊,我这块呢去set一下谁呀?诶我两个艾特服呢,是不是相当于我们系统的变量啊,这个系统变量呢叫哎comp type。Com。啊,Listen tap是吧?哎,把这个变量值呢,我们改成是一。那这时候就调,那这个变量值默认是多少啊,那咱们可以先看一下啊,来select一下啊。A。啊是吧,哎,Select相当于我们做一个查看啊,周琦啊,这个叫no Cha啊,这个还没看到它这个值,这个值呢,其实是零的意思啊,就是没有这个链式的意思啊,那我们这时候呢,把它做一个赛的话呢,相当于是开启了一个链式的一个行为啊具体呢,是什么意思,一会我们来说。
11:11
那么在这个呢,我们执行完以后的话呢,我们接下来呢,去begin啊,咱们相当于是开启这个事物对吧?诶开启这个事物之后呢,我们再做一个insert into添加成功了,我们再做一个commit啊,那么此时呢,我们再去做这个select from啊,这个我写到这吧。哎,这个呢,Selecting from,诶这地方是不是有张三,这个很好理解,没问题是吧?好,那么接下来的话呢,我们再去做这个叫iner into啊,这个我们走齐一下。啊,这个执行成功了,然后这时候我们再去做这个隐私into。那这个呢,就失败了是吧,然后的话呢,我们再去做这个。啊,这个都没问题,然后再之后呢,我们去做这个select from,我们这个USER3好,我们看一看此时这个值是多少。好,但是你看啊,此时这个值的话呢,它就只有张三了。诶,我们刚才的话呢,说诶这个时候呢,跟我们上一个题目的区别呢,就在于我们加了这样一个变量啊,上面我们没有加变量的时候呢,这个结果呢,相当于是不是张三和李四都有,但是现在的话,你会发现呢,只有张三,诶因为我们在这块呢,相当于执行了一个叫提交。
12:13
是吧,诶个提交,哎,这个呢,主要原因就是受我们这个叫诶comp type等于一这样的一个诶设置的影响。好,那说到这儿的话呢,咱们就把这个变量呢,现在给大家做一个讲解啊,以及呢,通过这个变量,我们讲一下这个事物的一个诶分类啊好,那首先我们来看一看这里边儿的这个。哎,变量的一个说法。嗯,在这啊,诶叫commission这个type,这个零的话呢,是它的一个默认情况啊,就是当我们执行这个commit的时候呢,会提交事物啊,在执行下一个事物的时候呢,还需要使用start transaction或者begin啊,就是我们所谓的这个正常的一个情况啊,那如果说我们要设置成是一的时候呢,这种情况下,当我们提交事物以后。哎,相当于呢,就执行了一个叫commit and,也就是开启了一个链式的事物。
13:01
啊,开启了一个链式的事物啊,当我们提交事物之后呢,会开启一个相同隔离级别的一个事物啊,相当于我们自动的就会帮我们再开启一个事物,只不过这个事物呢,它叫一个链式的一个事物。啊,这个我们等下说这个链式事物是什么意思啊,接着说说呢,如果是二的时候。这种情况下呢,呃,这个相当于这个commit是commit and release release呢相当于就是断开连接的意思啊,释放的意思相当于就是当我们提交以后的话呢,会自动的与服务器断开连接了。啊,这有一个断开连接的这两个行为。啊,稍微关注一下啊行,那么这里边呢,是不是就提到了,我们刚才设成是一有一个叫链式事物,诶什么叫链式事物呢?哎,这块呢,我把这个事物的常见分类啊,诶一开始的时候我是放在这个咱们第一章里边的啊,但是呢,这个放在这块呢,大家因为还没怎么接触过事物啊,一讲呢就懵了啊,那么通过这个变量呢?哎,咱们来说一下这个事物的一个分类啊,简单来说一下。啊,这个事物的话呢,分成这样的一些类别啊,其实这些类别的话呢,哎,看着挺复杂的,其实也比较简单啊,这个所谓的扁平事物呢,其实就咱们刚才看到这些啊,通过这个begin呢去开启,通过commit back呢去结束啊就这样个行为,这叫扁平书,然后这个呢叫带有保存点的吧,扁平书就是里边呢,我们去使用这个simple是吧?啊一会儿呢,我们给大家去举例就行。
14:18
啊,就是simple呢,使用上以后啊,就是第二种情况,然后第三种情况呢,哎,就是这个叫练的这种事物。啊链的这种事物,哎,我们这里边儿呢,相当于一个事物呢,说有多个这个子事物呢,来构成的啊这样的情况,然后呢,我们执行完这个事物之后呢,你可能会commit,然后哎,它通过一个触发器来触发了下个事物的这个执行。啊,然后就这样个场景,这叫链式的事物啊,然后呢,下边呢,还提到这个叫哎嵌套事务,嵌套事物呢,指的就是一个大的事物呢,它里边呢,涉及到几个子事物,哎子事物呢,还可以呢,再去迁到这个事物。啊,这有个嵌套关系的,哎,然后下边呢,还提到叫分布式事务啊,在我们分布式的这个系统当中呢,这个分布事务是我们必须要讲的了。
15:00
啊,比如说我们这个数据呢,相当于它分布在网络当中不同的节点当中啊,那这时候呢,我们要进行这个资源的一个调用啊,这个读写操作,这时候我们就需要用到这个分布式事物,对吧?哎,这样的场景好这块呢,大家做一个了解啊就可以了,行,我们这块呢,就拉回来,哎通过呢,我们刚才这样一个变量的讲解呢,大家稍微熟悉一下这个15的这个场景啊。好,这呢算是咱们这个叫案例一,然后接着呢,咱们看一个叫案例二。那上面叫距离一啊,接着距离二。哎,这个举例一的话呢,如果我们是想让他呢去体会一下谁呢,就关于这个叫哎commit是吧,哎和哎back哎它的一个使用,那么我们这个举例二的话呢,哎相当于让大家呢去体会一下什么呀,我们叫1DB。哎和啊DB。Po。哎,和咱们这个MY这个区别是吧。
16:02
这个咱们已经提到了,说这个麦some呢,它本身呢,是不是就不支持我们所谓的这个事物是吧,那我们这个不支持是什么意思呀?哎,咱们这块呢,来看一看这个问题啊,行,那这里边儿我们去创建一下啊。嗯,Create一个table,嗯,这个我们在这呢,F5刷新一下行,那create table呢,我叫台一啊,这里边的话呢,我们就这个,诶只来一个I吧,啊是个in类型的,好这块呢,我们指明的这个engine是这个in,哎,DB,好,这呢是一个表,然后我们再来一个表。啊,这个我们叫TEST2啊,这个我们使用的叫MY。哎,就可以了,行,那我们这块呢,把这两个表呢,分别呢,去创建一下。哎,创建成功了行,那么创建成功以后的话呢,我们针对于咱们的第一个表吧,叫in DB啊,这个呢,咱们是比较熟悉的啊,针对于。DB表。
17:01
行,那针对这个表的话呢,我们就首先呢,咱就begin吧。啊,Begin,然后呢,我们叫insert into啊这个TEST1。然后Y6它这个我就填个一这两个数据,然后呢做一个commit,那做一个roll back吧。哎吧。啊,这样的一个提交是吧。提交若,哎,还是执行吧,因为我们想说明它俩的区别是吧。来这时候呢,我们去开启这样的一个事啊,把它呢选中。啊,周琦。然后呢,我们去隐射了一条记录。没问题啊,那in射完以后的话呢,我们做一个查看select星from you test1啊。诶,这时候是不是就有我们这个一的数据了,行,然后呢,这时候我做一个操作,那此时我们再去查,是不是里边就没数据了,哎,这个呢,是针对我们叫in DB这样个表行,那么同样的这个行为呢,我们来看一看,这叫MY。
18:03
诶针对于MYS来讲,来我们这块呢,也去begin啊,相当于是开启这个所谓的这个事物啊,其实这块呢,对他呢就没有什么影响是吧,那在这个情况下呢,我们就做一个in s into。啊,那这时候你再做个查看,是不是显然这里边是有这个数据的,对吧?哎,那么这时候呢,针对于MY这个表呢,我们roll back一下啊,说起作用吗?来看一下啊,执行是不是意义还在啊,哎,相当于这个MYSM呢,对你这个回滚操作呢,是失效的啊主要原因呢,是因为我这块都无视你这样一个事物的存在啊,我们添加成功就是成功了,回滚没有用。啊,那这时就我们这个MYS不支持十物这样一个体现啊,这块呢,我们说明一下啊,不支持15啊。好,那这呢,就是咱们说的这个第二个这个例子了啊,然后接着呢,咱们再去说一下这个举例三啊。举例三,哎,这个举例三呢,咱们去体会一下,这个叫a point啊。哎,体会一下,我们这叫simple point,行,那这时候这个STEM的话呢,我们去创建一个表吧,在。
19:07
哎,Create一个table,嗯,这个我们叫USER1USER2,咱们来一个USER3,哎,USER3有了吧,F5刷新一下。啊,没有是吧,咱们叫U3。好,那这个U3里边呢,我们来一个叫我们张三给他来一个这个金额吧,哎,我差这个呢是15,然后呢,来一个这个叫哎,Balance。在balance呢,我们设置成是一个叫吧。哎,这个是逗号二,哎,这样的情况没问题是吧?嗯,行,我们这个呢,就选中,此时呢,我们创建这个表呢,使用的叫印度DB,哎,默认情况下呢,都是印度DB。没有问题是吧,行,然后这时候呢,我们首先呢,去开启一个这个事物,嗯,咱们先往里边呢,把这个数据呢,咱们先添加一下吧。啊,先添加一下啊,嗯,我们先添加一条记录啊,叫insert into这个USER3。
20:01
Name。Balance,哎,Value,这个我们叫张三,哎,针对张三呢,我们给他1000块钱,哎这样一个意思啊,这呢我们来一个叫commit啊,这呢相当于单独的让它是不是构成一个具体的事物了,是吧。嗯,Insert into啊,USER3啊,这个我们就一个一个这样执行吧,走起。啊,这样的balance是吧,哎,凑齐。然后commit提交啊没问题,好,然后接下来的话呢,我们去做这个select,哎,行,From一下我们这个U3。哎,张三有是吧?行,那么下面的话呢,我们去开启一个这个B啊,一个新的这个15了啊,然后呢,在这里边的话呢,我们去给他呢,去做一个update的操作。啊update啊叫USER3,然后set一下这个balance。哎,等于哎原有的这balance呢,我们比如说给它减去100啊说where这个name呢,等于哎张三哎这样一个行为是吧,好,那这时候我们把这个事物呢,给它先开启啊开启以后的话呢,我们做一个update的一个操作。
21:04
啊,相当于这时候我们给他减了100块钱没问题是吧?好减了100块钱以后的话呢,这时候我去设置一个叫same point啊,或者我们这时候减100,我我再执行一个啊。哎,CTRL一下,我们再执行一个叫update。啊,再走啊,相当于是不是又减了100啊,然后在这个位置的话呢,我们就设置一个叫ICO。哎,我叫SSE啊,这呢叫设置保存点。哎,保存点来,我们选中呢,做一个执行。好,那么执行完以后的话呢,我们再去做一个啊,你就比如说我们现在就想对它呢,进行多次这个update的操作啊,我们这呢是这个保存点呢,其实言外之意呢,就是我们前面执行的这些操作呢,都是没有问题的。啊,我就这块儿呢,先临时的记录一下。啊,就有点像我们在这个,呃,这个虚拟机当中啊,咱们是不是也可以呢,去设置咱们这个叫哎快照是吧?诶就是你前面这个,呃,整个的虚拟呢,都没有问题,我们设置个快照,万一以后呢,出现问题以后呢,我们还可以呢,回滚到我们这个快照这个层面。
22:05
哎,就是这样类似的一个概念啊好,那么我设置好保存点以后的话呢,我set user,它本来是想再减去100的,结果手一哆嗦呢,我们给他呢,还加上了一个一。是吧,哎,整成那个加上一个一了来我们这块呢,再去做一个执行。啊,然后呢,执行完以后一想,哎呀,整错了啊,我这时候还想要减100的,结果又加了个一,哎,我现在就想把它呢给回滚掉,是这意思吧,哎,那时候怎么办呢?我们叫哎roll,诶back to啊咱们这个simple呢,就不用写simple了,直接写一,哎这个我们叫回滚到啊保存点。啊,会用到保存点行,那这时候呢,诶这个咱们就没有必要这块去做查询了哈,但是大家如果你想看的话呢,我们可以去查询一下,这个叫呃USER3这个表,哎,你看啊,本身呢,是有这个1000块钱,这是减了100,这减了100应该这时800啊这时候又加个一,是不是应该是801啊哎,谁两个氢查看一下是不是801对吧?哎,咱们刚才呢,是不是执行这个roll back to这个S1,现在呢,我们去执行一下。
23:09
那么执行完以后的话呢,相当于我们就回滚到这个位置了,那要回滚到这个位置的话呢,我们再去做这个c select星,是不是此时呢,应该就只有800块钱了。哎,你看就相当于是回滚到我们这个保存点了啊,是这样场景好注意还没说完呢啊,我们这个回滚到保存点的话呢,它不是我们这个事物的一个终止状态啊,事物的终止状态,我们说这个结束状态啊,就两个一个呢,是不是提交一个呢,是不是就回到这个终止的啊这样的一个状态,咱们现在呢,只是回滚到这个保存点了啊。啊,那这块呢,其实我们,哎。就比如说啊,我这时候呢,再去做一个叫roll back的话呢,这是不是叫回滚的意思啊。啊,那么这个回滚操作,你看我们还能执行成功吗。啊,有同学可能会想说,老师你这块已经回滚到保存点了,这个再回滚还能成功吗?来你看我们执行一下啊。哎,我执行完以后的话呢,关键就看我们这个呢,哎,CI select的星查询这个结果了,你看是800还是1000呢。
24:05
哎,大家看是不是变成1000了。哎,那也就是说我们这种呢,哎,设置这个保存的意义呢,就是你前面这个操作呢,哎,其实就我再说一遍啊,咱们前面其实也稍微提到过了,我们这一个事物的话呢,假设你要做这五个事儿啊,我现在做了这三个事儿了,这三个事儿呢,我都没写错啊,你怕你后边呢写错,你就在这呢设置个保存点,然后执行这个时候呢,确实写错了,这个我们一回滚到保存点,相当于呢,你这条操作呢就失效了,然后你再接着呢写一个正确的。诶就怎么着啊,诶那么相当于呢,这只是一种临时的一种情况,整个这个事物来讲的话呢,诶你要么呢,就是整个不想做了,那你就把这个事物呢,回滚到这个状态,诶你要想做的话呢,你把这个剩下这个执行完以后的话,你最后呢,Commit。是吧,哎,就这样一个意思。啊,咱这呢,相当于是执行的一个back了是吧?诶大家体会一下啊啊这呢,就我们说的叫哎保存点它的一个作用啊和一个诶一个实际情况的一个演示啊那这呢,咱们就把这里边的这几个呃例子呢给大家说了说啊大家下来自己也感受感受啊去写一写啊这里边呢,还是比较简单的直接呢,针对这个事物,就针对这一个事物的一个行为的一个操作,然后下面的话呢,我们来看看诶这个事物的具体的这种并发问题啊,就涉及到叫多个事物之间呢进行交互的一个行为了。
我来说两句