博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle--DML触发器
阅读量:2442 次
发布时间:2019-05-10

本文共 1620 字,大约阅读时间需要 5 分钟。

语句级触发器

创建语句级触发器,当添加学生时弹出“用户注册窗口”。

create or replace trigger tr_studentbefore insert on studentbegin  dbms_output.put_line('欢迎新同学!');end;

执行:

在这里插入图片描述

利用触发器实现日志管理功能。该触发器用来实现当在Student表中删除一条数据时,在stu_log表中添加一条包含当前操作用户(USER)和当前操作日期(SYSDATE)的记录

创建日志表:

create table stu_log( WHO varchar2(20), WHEN DATE);

创建触发器:

create or replace trigger tr_stu_logafter deleteon studentbegin   insert into stu_log values(USER,SYSDATE);end;

测试:

在这里插入图片描述

行级触发器

如果在某个表上创建了一个触发器,在对这个表进行DML操作时,每当影响一行数据,该触发器都将被激发执行一次,那么这个触发器就是行级触发器。

在行级触发器中有一个很重要的特点,当创建BEFORE行级触发器时,可以在触发器中引用受到影响的行值,甚至可以用在触发器中设置它们。

创建一个简单的行级触发器,如果对表Student进行DELETE操作,每删除一条符合条件的记录,就显示一次字符串“1行已经被删除”。

create or replace trigger tr_stu_delafter deleteon studentfor each rowdeclarebegin  dbms_output.put_line('1行已经被删除!');end;

测试:

在这里插入图片描述

需要注意的是,在创建行级触发器时,可以指定一些条件,这样只有当特定的数据受到DML影响时,触发器才被执行。创建触发器时,可以在FOR EACH ROW子句之后使用WHEN子句指定条件。

重新编写上面例子的触发器,要求对SNAME为“张三”进行监视,只有当从表Student中删除SNAME列值为‘张三’的行时,才激发触发器。

create or replace trigger tr_stu_delafter deleteon studentfor each row when(old.SNAME='张三')declarebegin  dbms_output.put_line('1行已经被删除!');end;

测试:

在这里插入图片描述

在行级触发器中,同样可以使用条件谓词INSERT、UPDATING和DELETING,以判断当前所进行的DML操作。行级触发器通常用于对用户的DML操作进行合法性检查,使得用户修改数据的操作必须按照一定的规则进行。

为了能够比较修改前和修改后的数据,在触发器的可执行代码中,可以使用两个关联行——NEW和OLD。它们为别表示触发器被激发时,当前行的原数据和新数据。:NEW和:OLD也称之为系统变量,由Oracle系统管理,存储在内存中,不允许用户直接对其进行修改。:NEW和:OLD变量的结构总是与执行DML操作的表的结构相同。当触发器工作完成以后,这两个变量也随之消失。这两个变量的值是只读的,即用户不能向这两个变量写入内容,但可以引用变量中的数据。

  • :OLD 变量用于DELETE和UPDATE操作所影响的行的副本。当执行DELETE或UPDATE操作时,行从触发表中被删除,并传输到:OLD变量中。
  • :NEW 变量用户存储INSERT和UPDATE操作所影响的行的副本。当执行INSERT或UPDATE操作时,新行被添加到:NEW变量和触发表中,:NEW变量中的行即为触发表中新行的副本。

另外,需要注意的是,在触发器的可执行代码中,如果要通过OLD和NEW引用某个列的值,要在前面加上“:”,在其他地方不能使用“:”。

转载地址:http://akpqb.baihongyu.com/

你可能感兴趣的文章
在Windows 7下最大限度地发挥多显示器的魔力
查看>>
如何使Ubuntu中的Gnome面板完全透明
查看>>
电子修补程序入门:购物清单
查看>>
chrome插件 备份书签_如何在本地备份和还原您的Chrome书签
查看>>
利用图表绘制技巧赢取免费的Chrome Cr-48笔记本电脑
查看>>
红色和青色叠加_如何用任何图像制作经典的红色/青色3D照片
查看>>
chromebook刷机_如何在Chromebook上下载Android应用
查看>>
哪个更好:Revo卸载程序或免费替代方案?
查看>>
了解东西如何与2011年最佳入门指南解释者一起使用
查看>>
slack财报_每日新闻摘要:Slack将重置一些用户密码
查看>>
在Firefox的“关于”页面上找到隐藏功能和复活节彩蛋
查看>>
windows10鼠标指针_如何在Windows 10上更改鼠标指针的颜色和大小
查看>>
word中将空格替换为_如何在Word 2010中将英寸更改为厘米
查看>>
如何在Google文档中创建连字符,连字符和Em连字符
查看>>
如何为Windows Home Server设置电子邮件通知
查看>>
spark fold_每日新闻摘要:三星Galaxy Fold将于9月发布
查看>>
gpt分区 添加vhd引导_如何在不进行重新分区的情况下双重引导Windows 7和8(使用VHD)...
查看>>
如何使用Linux lsof命令
查看>>
usb驱动程序_如何为USB驱动器上的程序创建快捷方式
查看>>
chrome点击书签栏书签_如何充分利用Chrome书签栏
查看>>