![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
触发器
文章平均质量分 74
码三狼
孤独的旅行
展开
-
PLSQL入门与精通(第76章:表行数的异常处理NO_DATA_NEEDED)
上次介绍了“表·函数”,在使用表·函数时,有些注意事项要注意。那就是使用“WHERE ROWNUM<=n”想取前几条数据相关的注意事项。例如,请看以下我们用“WERE ROWNUM<=n”对表·函数进行查询。SELECT * FROM TABLE (pac1.f1(5)) WHERE ROWNUM <= 2;COL1 COL21 ABC12 ABC2上面的表函数pac1.f1(5)是处理5次循环,每次循环返回一条数据,总共返回五条数据。也就是说这个函数如果没有查询条件原创 2021-03-28 20:57:44 · 261 阅读 · 1 评论 -
PLSQL入门与精通(第74章:视图的更新-监听器)
上次介绍了通过视图更新数据的通常的方式和限制条件。一般来说,通过视图进行数据更新(INSERT、UPDATE、DELETE),只要该视图是单纯的SELECT语句定义的视图即可。也就是说,如果是不汇总或数据被加工过而是直接显示数据的视图,一般可以通过该视图来更新数据。在这种情况下,在数据库侧,将针对视图的DML语句(INSERT、UPDATE、DELETE)自动转换成表的DML语句,来更新数据。但是,对于定义的复杂视图,DML语句无法在数据库侧转换成表的DML语句,因此会发生错误。这种情况下如果在数原创 2021-03-28 16:40:04 · 365 阅读 · 1 评论 -
PLSQL入门与精通(第72章:LOGOFF触发器)
上一次我们介绍了登录触发器,本次我们介绍注销触发器。我们这里的注销指的是退出回话或者退出回话的意思。注销触发器是用户退出回话或者数据库数据库时启动的触发器。他是会话结束前的最后一步处理。登录触发器和注销触发器都是属于同一类别的触发器,他们有以下2个最大的差别:1.登录触发器在SYS用户下是不能被启动的,注销触发器在SYS用户下是可以被启动的。2.在登录触发器中,如果发生例外,例外没有处理的话,则无法登录,但是在注销触发器中发生未处理的例外的话,用户照样能够退出回话。首先,关于1.的部分,登原创 2021-03-28 00:35:09 · 208 阅读 · 1 评论 -
PLSQL入门与精通(第71章:数据库登录触发器)
上一次我们介绍了DDL触发器。使用DDL触发器,不管操作什么样的对象类型(表,视图等),都可以在CREATE、ALTER、DROP的时机执行某些处理。例如,执行的操作可以是保留DDL操作的历史记录、限制特定对象的删除等。从这次开始,我们介绍一下另外类型的的触发器:登录(Login)触发器和注销触发器。我么先介绍一下登录触发器。正如名字所示,这是登录数据库时启动的触发器。触发器的一般结构已经解说完毕,下面就以例子,解说一下登录触发器特有的部分。SQL> show user用户是“SYST原创 2021-03-27 10:54:55 · 194 阅读 · 0 评论 -
PLSQL入门与精通(第70章:复合触发器的例子:操作其他表)
上次解说了DDL触发器。DDL触发器是通过DDL文(CREATE、ALTER、DROP)启动的触发器,在触发器中,可以使用事件属性函数(ora_xxxx)获取DDL的事件和DDL操作的对象的信息的详细内容。上次介绍的例子是:为了防止误删除SCOTT.EMP表DDL触发器的例子。如果存在该触发器,SCOTT.EMP表就不会被删除。这次介绍一下DDL触发器的另外一个例子。这次在DDL触发器中可以操作其他的一张表。具体来说,就是在日志表中插入 DDL操作的历史记录。例如,谁、什么时候、哪个用户、操原创 2021-03-26 21:46:21 · 117 阅读 · 1 评论 -
PLSQL入门与精通(第69章:DDL触发器)
前两次我们解说了“复合触发器”。总结一下,复合触发器简单来说是将4种DML触发器(BEFORE的SQL文、BEFORE的行、AFTER的行、AFTER的SQL文)整理一块的东西。这些都属于DML触发器,是最常见的触发器,是DML语句(INSERT、UPDATE、DELETE)执行的时候自动启动的PL/SQL程序。但是,除了DML触发器之外其他种类的触发器也有很多。例如,“DDL语句”启动的触发器、在“登录”或“注销”数据库时启动的触发器、在某个“错误发生的时候”启动的触发器、在“启动”数据库、“停原创 2021-03-26 11:20:18 · 482 阅读 · 1 评论 -
PLSQL入门与精通(第68章:复合触发器的例子)
上一次介绍了复合触发器的语法。今天介绍一下复合触发器的应用例子。首先,简单的复习一下上次的内容。如果不是复合触发器,而是使用普通的触发器定义,如果在触发器之间共享变量,则需要使用使用包变量。这种情况下,需要在包里边定义变量,变量的使用要在各个触发器内用各自的形式去使用用的,代码比较分散,系统变得非常难以理解。这时候,如果使用复合触发器的话,无论是变量定义还是多个触发器定义,代码都在一个复合触发器内部,非常容易理解。我们介绍复合触发器的例子,分为2部分。一部分是简单例子,第二部分是实践的例子。★原创 2021-03-25 23:48:34 · 185 阅读 · 0 评论 -
PLSQL入门与精通(第67章:复合触发器的语法)
从这次开始介绍新课题:“复合触发器”。之前我们介绍过触发器了。触发器是在发生某个事件时自动启动的PL/SQL程序。根据事件的种类和触发器的时机有好几种触发器。一般来说,对于数据库的表的操作一般是DML文(INSERT,UPDATE,DELETE),DML文执行的时候自动启动的触发器最具有代表性。表的DML触发器可以分为以下4种・BEFORE的SQL文触发器・BEFORE的行触发器・AFTER的行触发器・AFTER的SQL文触发器“BEFORE”、“AFTER”的意思是触发器启动时机是DM原创 2021-03-25 21:14:00 · 171 阅读 · 0 评论 -
PLSQL入门与精通(第42章:利用触发器随时保持导出列的值的同步)
周六,开了一下午会。晚上闲暇继续。前几次我们对触发器进行了深入的学习,这次我们学习触发器另外一个例子:“使用触发器及时更新导出列的值”。导出列是指可以从其他数据表总导出的列,这个列可以使另外一张表的合计值,平均值。这个合计值、平均值要始终和原表数据保持一直。例如,有2张表,部门表、员工表,如果员工表有部门和工资列,部门表中有该部门员工的工资合计列,则该列为员工表的导出列。如果是设置导出列的时候,如果原数据被更新,导出列也需要相应地更新。也就是说,员工表变动的情况下,部门工资合计也会发生变化的,部门原创 2021-03-06 22:01:25 · 156 阅读 · 1 评论 -
PLSQL入门与精通(第41章:Before行触发器“:对NEW.列名”进行赋值)
你好。是教练蓑岛。 上次,行触发在DML操作的对象行上启动,解说了“可以参照该行的列值”。 具体来说 :OLD.列名称←DML操作前的列值 :NEW.列名←DML操作后的列值 这样的记述可以参照该行的列值。 如果该触发在UPDAATE中启动 《:OLD.列名》是UPATE前的值,《:NEW.列名》是UPATE后的值,所以很容易理原创 2021-03-06 14:58:16 · 466 阅读 · 1 评论 -
PLSQL入门与精通(第40章:触发器使用的前提条件)
截止到目前针对触发器介绍了很多。但是我们是不是任何处理都可以使用触发器呢?肯定不是的。有的时候即使语法上正确(即使编译正常),也不能作为触发处理(执行时出错)。代表性的有以下两个情况是不行的:1.COMMIT, ROLLBACK, SAVEPOINT2.行触发器对象表进行SELECT、INSERT、DELETE、UPDAATE处理(但是关于行触发)首先,关于上述1.我觉得可以理解:触发器是自动在后台执行的,如果擅自终止处理的话就乱了。关于2.,对于行触发器,对于该触发器所设定的表(称变更表),触原创 2021-03-06 14:13:37 · 195 阅读 · 0 评论 -
PLSQL入门与精通(第39章,行触发器列的值)
上次我们提到了DML操作行触发器,它是在操作对象数据行上触发的,同时“可以参照该行的列值”。具体来说::OLD.列名称←DML操作前的列值:NEW.列名←DML操作后的列值如果触发动作是UPDATE中化《:OLD.列名》是UPDATE前的值,《:NEW.列名》是UPDATE后的值。如果触发动作是DELETE的话,『:OLD.列名』是在DELETE发生之前的该行的该列的值,《:NEW.列名》是DELETE后该行该列的值。可是,如果DELETE的话就不存在该行了,值是啥呢?告诉大家,“:NEW.列名”原创 2021-03-06 13:28:49 · 158 阅读 · 2 评论 -
PLSQL入门与精通(第38章:DMLSQL语句触发器和行触发器的语法和例子)
上次简单的解释了一下DML触发器的特点:DML触发器有全表触发器和行触发器,全表触发器针对的是整个DML语句,行触发器对DML操作的每一行数据。这次详细说明一下DML触发器的语法。首先是“全表触发器”最低限度的语法:<全表触发器定义语法>1 CREATE OR REPLACE TRIGGER 触发名2 时机3 事件4 ON 表名称5 无名PL/SQL块解释如下:・第2行的时机指定“BEFORE”或“AFTER”。如果是BEFORE,则在DML处理之前启动触发器,如果是AFTER,则在原创 2021-03-05 13:28:39 · 247 阅读 · 1 评论 -
PLSQL入门与精通(第37章:触发器分类以及DML触发器)
上次就触发器进行了简答解释:触发器是指通过某些事件自动启动或者触发的程序。本次针对触发器种类进行简单的说明,并对其中最常用的一种进行详细说明。首先触发器大体分为3大类:1.DML触发2.DDL触发器3.其他最常用的的是“DML触发器”:就是对特定表进行DML操作(INSERT、UPDATE、DELETE等)时启动的触发器。接下来是“DDL触发器”:这是针对DDL操作(CREATE、ALTER、DROP等)启动的触发器。另外,作为“其他”:以上2类以外的归为一类:譬如:・登录或注销数据库时启原创 2021-03-04 19:12:38 · 298 阅读 · 1 评论