PLSQL编程:详解DML触发器与系统触发器示例

需积分: 13 1 下载量 164 浏览量 更新于2024-09-06 收藏 13KB DOCX 举报
本文档主要介绍了PL/SQL编程中的触发器概念及其在数据库操作中的应用。PL/SQL是一种过程化语言,用于增强Oracle数据库的功能,特别是对于管理数据完整性、数据一致性以及在特定业务场景下自动执行操作。文档详细探讨了三种类型的PL/SQL触发器: 1. **DML(Data Manipulation Language)触发器**: - **删除触发器(Delete Trigger)**:以`tr_del_rj182`为例,这是一个在数据删除操作(如`delete from rj182 where stu_id = 6;`)之前触发的行级触发器。它首先通过`before delete`关键字定义触发时机,然后在`foreachrow`循环内,将被删除的数据(如`stu_id`, `stu_name`, `stu_age`, `STU_PRICE`等)插入到`student_log`表中,作为历史记录。 - **更新触发器(Update Trigger)**:`tr_update_student`是当数据被更新(如`update rj182 set stu_name = '王二麻子' where stu_id = 6;`)后触发的,它记录新值并插入到`student_log`表。 2. **系统触发器**: - `select * from log_event;` 查询显示了与数据库活动相关的日志事件,这些可能是由系统自动记录的,例如登录(login)和登出(logout)事件。 3. **自定义记录表和触发器**: - 创建了一个名为`log_event`的表,用于存储特定的元数据,如操作类型(log_type)、执行用户(username)和时间(logonTime和logoffTime)。 - `logon_trigger` 是一个`after logon on database`触发器,每当有用户登录时,会自动在`log_event`表中记录一条新的登录事件,包括当前登录的用户名(`ora_login_user`)。 通过这些触发器,开发人员可以确保数据的完整性和一致性,同时减少了手动管理数据变更日志的工作量。了解并掌握PL/SQL触发器的使用是提高数据库管理效率和维护数据库安全的重要一步。