00:00
孵化器是许多关系型数据库系统都提供的一项技术。呃,在Oracle系统里,触发器类似于过程和函数,都有声明执行异常处理过程的信号后块。这是它的一个这个这个这个创建的一个格式啊,这个触发器的作用是什么说触发器在数据库里以独立的对象存储,就像你在这儿一样能够看到。这是函数了,触发器。第一个。这儿那就是触发器,这里没有,嗯。它可以存储起来的,哎,然后呢。与存与存储过程不同的是,存储过程通过其他程序来启动运行,或者是直接启动运行。我们用一个declare,一个用一个begin去调用这个函数,它就相当于在使用了,就像扎里的方法一样,得用对象来调,而这个触发器不一样,触发器是由一个事件来启动运行的,只要你诶触发下那个事件,那个事件一启动运行,我这个触发器就跟着你一块儿运行的。
01:11
触发器是当某个事件发生时自动的隐式的运行,你看不着。那当然有可能这个你会让他输出一个东西哈,也能也能看到,但有的是看不着的,你不需要它输出就看不着,但实际上它执行的。并且触发器是不能够接收参数的。啊,所以运行触发器的过程就叫做触发或者点火。点火吗?Oracle事件指的就是对数据库的表进行的这个增删改,嗯等类似的一些操作。这是要出发是吧,要点火啊sir。一说fair,我就想起那什么,就讲那个,当时就说说这个。新东方的一个老师啊,就想翻译那个国歌,国歌后边不是有个叫浅金浅金浅金金是吧。
02:05
就是很很那个很激昂的那个,然后就是这个前进怎么翻译啊。然后呢啊,你以为咋翻音,就是你要用fair也行,我觉得啊,Fair不就是就冲嘛,就是你想这个还是挺挺形象的,就是硝烟弥漫是吧。嗯,然后呢,就往前冲,叫fair可以,Fair就相比于两两边是吧,S个手榴弹过去是吧,这个有的人当时就翻译成啥,翻译成come on是come on是加油嘛是吧,但是这个词呢,证明这个词是怎么用的啊。就是大家看过007是吧。就007,每次演的时候不都有帮女郎吗?就是最后任务完成以后,就是邦德,然后住了一家旅馆是吧,然后进去以后把窗户都拉住,美女往床上一躺。然后那个棒一过来,然后美你来一句come on是吧,这个是come on的用词哈,所以你不能在谷歌里边,最后到最后come on是吧,疯了就是吧,嗯,所以说你这个学语言的时候还是挺挺那个啥的哈,尤其做一个翻译家的话,比你这个原一定程度上比你这个原创原创作还要难。
03:25
一首中国的一首很美的一首诗是吧,翻成英语发现让人就觉得非常的弱智是吧,包括好多这个英国的或者俄国的那些大作家写的一些诗啊,或者一些文章,翻译过来,咱觉得写的好烂呀,是吧,你看中国的,因为好多诗有对仗,有押韵,你翻译过去你没有押韵的,所以这些东西是翻译过来就原味全食。所以一定程度上你做个翻译,做一个好的翻译,就跟你在创作难度一样,对啊,默言啊啊默言啊就混成这啊。
04:01
莫言,反正我也不大了解哈,确实中国能拿到一个这个还是挺不容易的,也是啊。我觉得他有个观点挺好,就是你比如说你拿到那本奖,回国以后也没有说什么炫耀啊或怎么样是吧,自己该干啥还干。这就是才是大师呢,他可以去各个学校做演讲。是吧,借着这个牌子,然后你想干点啥都能干,你这个牌子至少在中国现在比你说是一个院士要靠谱的多了,是吧。中国的院士一抓的很多人都是一个院士,你知道很值钱的。你就现在差不多点一个一些,现在以后可能高校也就放开了,有一些地方的高校,你要能去这个当院士,你这个院士你要愿意去这个高校里。至少立马就给你拿出甚至500万的这个研究经费来,然后房子给一套子女的什么这个就业什么问题全解决,就这样。一个院是非常值钱的哈,你像湖北师大好歹也算全国排名30左右,三十三十多一点儿这个学校啊,我们学校也就才俩面试。
05:05
然后就我读的统计,有一个人。医院是很宝贵的院士,基本上就是一个学科,死一个补一个是这样是你比如说像统计,统计这学科实际上是很有发展,在中国。时间还短,统计这块就一个就一个区。对,就我们那个院士,他是那个叫第三世纪院,其实按水平来讲他是很强的,但是他常年在国外。他就是东北师大,是他的这个,每年在这儿半年,然后他是新加坡国立大学待半年,他每年在这待半年,他常年在国外,所以他在国内评个院士也是有人际关系讲的是吧,不是你学术高我就都投你,大家就都投你,你学术高,然后你要这关系为好,然后这样说,哎,我想当院士,大家夸大都你那就是。嗯,就这个他就是投了两次,他这个其实学术水平很高,但是这个人品在国内没有维护好。
06:03
所以投了两次呢,就都没选上,都没选上,就因为这个统一这个学科现在就一个是吧,而且新选上那个比他还年轻,就基本上就没戏了,因为那个肯定死在他后面是吧,就院士是很难选,那你拿个诺贝尔奖的那个院士靠谱的是吧,中国你要说之前也没有诺贝个奖,也应该也算有。但是据说当年中国不是九六几年研究那个胰岛素。就是那个合成人工合成牛胰岛素,那就说那个东西实际上是可以拿诺贝奖的,但是那是一个团队做的,单诺贝尔奖只能单给个人。所以说这个当时谁去拿,就就因为是当时中国那个那个状态是吧,大家都是觉得是一个集体,让谁去拿都不好,所以当时就没有要。所以就没有那个很多现在诺贝尔奖都已经被神化了。在计算机里边,计算机没有贝讲啊,计算机里边是自己的奖项。
07:05
就是叫那个铜铜灵奖,铜灵奖啊,或者现在又叫相龙相龙奖。嗯,对,这个这个是比较高的,像树叶里边最高的叫塞尔西亚。就是还是有不同的这个,那电影里边就奥,那咱接着讲这吧,讲完以后咱慢慢唠,呃触发器,触发器需要你关注的点有这样几个,一个是触发事件,就是你想哎哎,这这触发事件就是因为什么会导致它的发生,像这BML里边的增删改是吧,它会导致这个触发事件的发生,那么这个触发的时间。是你在这几个增删改之前,还是在之后。这叫出发的时间。一会儿再唠啊,触发器本身就是你这个触发器到底想干什么,就是你触发器本身这个操作触发的频率。频率分成两个啊,一个叫语句级或行级,就是说你是比如说你进行一个。
08:04
Update的一个操作,Update呢,你想把整个这个表里边儿的所有人的工资都加100。都加100,你是需要我在你整个都加完以后。触发一次,还是说你每加一个人,每加一个人就触发一次。这里就分成了叫语句级和行级,航集呢,就是每处每update的意思,哎,就触发一下。呃,语句句就是整个update完了以后,当然也不一定以后了,就看你是想前还是后了,嗯,然后出发一次。嗯,这就是对应的这个触发时机,这个触发器需要大家呃理解的这组成部分四块哈,具体怎么来声明。就这样一个格式叫create or replace figure出发这名,然后呢,你是要之这个这个事件之前还是要之后出发触发这个事件是是什么,是增删改哪一个。然后呢,是作用在哪个表里边儿的,哪个表里的啊。
09:03
哎,是一个行级的,还是一个语句级的。这样一个过程。看看这里边儿练习。写一个hello word级的触发器。这个是看想干什么,就是当你每更新这个employees表的时候,就执行一下啊。每更新一下,你调一个表,我就让你出发一下,Replace or replace replace tri,然后叫然date EMT这个表的来推。然后你是想之前还是之后,你讲之后after after这个update on employees这个表,嗯,然后呢,你是是需要每一行都这样操作吗?如果是的话,就写for each肉。
10:09
应该是有标点吧。嗯,然后呢,就是你想干什么是吧,确认这没写啊,你想干什么想干什么的话,你就这加一个begin,然后后边让他去执行。Begin begin bes out。嗯。每执行一次,我就让你输出一个那个hello word正在结束。焦点,错了。很热。
11:03
那就好了,那你好在这看。这就我们常见update,当你每执行对increase表执行update操作的时候,我就触发这个事件。抓紧时间来up employee。That salary等于salary加上100,我我要这样写的话,就所有的都不行了,是吧,我这里不会了,就是比如说对。你他的ID等于80 82部门的员工全增加100,当你一执行update,他就会触发他的执行34条。22部门有34个人,那你就带这个啊,然后呢,你可以。比如出个一,哎,当你update它的时候,不让你每行都执行,就是最后执行一下。
12:06
要把这个给它去掉。然后你再执行这个。进行进行这个操作哈,哎,这个。这就不好了是吧。这是不是有两个呀。对,把这个给它删掉。然后。加这个。这不就一条吗?34条都给它update,但是只输出一个。这就是这个叫触发器啊,哎,实际上你这个明面上执行的时候,根本没有掉这个触发器,触发器它是自动执行的。他就被fire了。后边编写一个编触发器的hello word编写一个触发器,像一条插入记录的时候,这就叫insert了是吧?当你每插入一条数据的时候,让你去写。
13:11
刚才我们创建这个叫update,你创建这个触发器仅仅对你这个employees表执行update操作时候有效,假设你要是给它。你晒一条数据的时候是无效的。这个表儿太大了是吧。这表太大了,往色的还挺,还挺恶心的,我创建一个表,Create table tempmp。As。ID salary。Advice。
14:12
好,创建这个table啊,创建这个table,然后我创建触发这个table的一个触发器。刚才这个,然后让它作用在E上。这个触发器啊,就是仅仅对这个E这个表的update操作有作用。嗯,改个名。啊。好了,初二就出发好了,当你update。That。粘P触发器是啊。Opposite盐皮set salary等于salary加上一个100。
15:02
那就这样是不是就行那个哈,我们这是以预计的哈,就整个结果进行一个,当你要是想执行,比如说这个。Inser ins射操作。你看会不会出发?听见啊,你看并没有导致触发器不行,因为你是插入的是吧,插入操作不会触发它,你要想触发的话,你得。对,变一个insert的哈。Insert on这个表。输出一下他。啊,这个创建好了,然后我再in色的。
16:03
2002吧。你看过一次的一致性就出来它了。嗯。就是这个意思啊,嗯,这个我们就往下走吧。每更新一个就会触发它,对对我们都说了哈。哎,有一个这个概念叫冒号new,冒号old。这个呢,比如说当你update一个表的时候,哎冒old,比如我想update这个salary,把它的工资啊都涨100。那么只涨100以后,我想看看那个旧的工资是多少,以及你涨以后的新工资是多少,我们就可以使用这两个符号来表示。哎,回来。嗯。你看这个。这里边儿的二跟三是我们刚才创建的,这个呢,是作用在E的,用于update的,对吧。
17:02
我先。Select from。这是这个表的信息,然后呢,重新update它。先不要给他,我先你改一下。这个触发器哈。嗯。这是这个触发器二。怎么改用在每一行上?嗯。然后呢,再打印不打印这个了,我打印一下,当你给它update的时候,把旧的那个值。和新的值分别打出来。Old salary,这是字符串啊,冒画这样这样用,但是双数键冒画old.cry。嗯,然后呢,叫new下文。
18:03
冒号你用点下来。输出一下你在update之前的这个值和之后的这个值。创建好了,创建好了以后update眼皮set。这个。这是不是旧的2万加上100以后的。那这个很有用啊,我可以把那个更新之前的值和旧的值都获取到,如果你只想要旧的,你就用这个是吧。哎,这个这个为啥说它挺好的,你看这个题。这个题有点意思哈。你说谁?这个是我们讲这个抓起最后一个练习的,那是干什么?
19:04
编写一个触发器,在对这个表的记录进行删除的时候,在这个表当中对备份对应的记录。备份哈,你这边不知不这这边再删除,哎,实际上不知不觉的,它导致了一个触发器的执行,那个触发器呢啊,你这边删的,你删一条,我这里就给你加一条。你删完了,我这也就给你复制过来了。当然前提是不是现在有两个表啊。报两个表。我就捡起来就洗脸。这个表收集就拿过来。嗯。嗯。
20:02
我呢?看见了,那你这个时候select听from my ET这个数据呢,再创建一个。这让这个表是空的。好,然后没有对吧。这个表有这个表没有,我现在呢,造个触发器,当你把这个表清空的时候啊,不是清空是delete的时候。让它复制到这里边儿。
21:03
Great,好,Replace。这个。你在点点P列表的时候让它对吧,嗯,Before。一。买MP。嗯,包一吃肉。Begin。怎么执行,当你一删除这个表的时候,我就执行,怎么执行啊。我让你射他。嗯,你in。To e这个。Value,这表示表结构。
22:04
怎么获取到冒号old点冒号冒号。是这样的,你看懂了吗?当你一删除的时候,每删除一条,我就触发一次这个执行,我就把你那个old的,就是你要删的这个表里边儿的旧的。信息给他添加到这个新表里。看见了,Delete farm空就行了。哎,这个时候啊,其他可星来没有是吧。然后你再看这个直接可以下来。
23:08
就全有了,就是你刚才删的,你删一下,我给里加一下,这个事情就发器做到了。哎,这就主罚器哈,然后你要这个时候给它delete,哎就保存了。嗯,对,触发器就有这样这样的作用啊,它是后边就给你自动执行的。你看不到,嗯。嗯。行,整个我们这就讲完了PL啊,大家你需要掌握的实际上是这两个,前边这些它都集成在这里了。
我来说两句