`
kely39
  • 浏览: 49244 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle触发器基础

阅读更多

基础书籍中记录下来的。

--1、语句触发器
create or replace trigger tr_insert_test1
before insert
on test1
begin
  if user!='admin' then
    raise_application_error(-20001,'权限不足,不能向数据表中插入数据1');
  end if;
end;
--多个激活动作
create or replace trigger tr_insert_test2
before insert or update or delete
on test1
begin
  if user!='KELY' then--区分大小写,统一大写
    raise_application_error(-20001,'权限不足,不能向数据表中插入数据2');
  end if;
end;

--触发器谓词:INSERTING、UPDATING、DELETING(类型布尔值)
--记录数据库表操作日志,使用触发器
create table t_log(
       u_name varchar2(20),
       action varchar2(50),
       log_time date default sysdate
);
create or replace trigger tr_table_log
after insert or update or delete
on test1
begin
  if inserting then
    insert into t_log(u_name,action) values(user,'insert');
  end if;
  if updating then
    insert into t_log(u_name,action) values(user,'update');
  end if;
  if deleting then
    insert into t_log(u_name,action) values(user,'delete');
  end if;
end;
--禁用表的权限校验触发器
alter trigger tr_table_log enable;--disable/enable

--总结:作用级别为表(不支持视图before/after insert和表before/after select),
--     无论触发动作影响到多少记录都执行一次触发器

--2、行触发器
       insert      update     delete
:old   不可用       可用        可用   
:new    可用        可用       不可用

--实例
create or replace trigger tr_test1_history
before update or delete
on test1
for each row --行触发器的标志
  begin
    insert into test1_history values(:old.tid,:old.tname,:old.tage,:old.remark);
  end;

--变量引用于referencing
create or replace trigger tri_test1_insert
before insert
on test1
referencing new as new_value
for each row 
begin
  declare max_id number;
  begin
    select max(tid) into max_id from test1;
    :new_value.tid := max_id+1;
  end;
end;
--触发器的条件限制

--3、instead of触发器(视图)

--4、系统事件与用户事件触发器
--系统事件触发器
--after startup/before shutdown(系统事件) on database
--用户事件触发器
-- on system.schema:指定触发器的作用对象为用户system的所有对象(表名)
--5、触发器相关操作
--禁用/启用触发器:disable(alter trigger tr_name disable/enable)
--数据字典中查看触发器:user_objects/user_triggers

 

0
0
分享到:
评论

相关推荐

    Oracle触发器基础教程.pdf

    Oracle 触发器基础教程 Oracle 触发器是一种特殊的存储过程,它在插入、删除或修改特定表中的数据时触发执行,具有精细和复杂的数据控制能力。触发器的概念和类型包括: 1. 安全性:基于数据库的值使用户具有操作...

    Oracle触发器好东东

    ### Oracle触发器基础 触发器是数据库管理系统中的一种存储过程,它会在特定的数据库事件(如数据插入、更新或删除)发生时自动执行。这些事件通常与表的数据操作有关,而触发器则可以用来强制业务规则、数据完整性...

    oracle触发器实现主键自动增长

    本文将深入探讨如何利用Oracle触发器来实现这一功能,同时也会讲解背后的原理与实践步骤。 ### Oracle触发器与序列 在Oracle中,触发器是一种存储过程,它被定义为当特定事件(如数据的插入、更新或删除)发生时...

    Oracle 触发器语法及实例基础知识

    Oracle触发器是数据库管理系统中的一种重要机制,它允许在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行一段PL/SQL代码。在Oracle数据库中,触发器被广泛用于实现业务规则、数据验证、审计跟踪等功能...

    Oracle触发器操作.pptx

    Oracle触发器是数据库管理系统Oracle中的一种重要特性,它允许开发者在特定的数据操作(如INSERT、UPDATE、DELETE)发生时执行自定义的逻辑。本章详细介绍了触发器的基础知识及其在数据库管理和信息系统中的应用。 ...

    浅谈MIS开发中对Oracle触发器的应用.pdf

    本文主要探讨了Oracle触发器的基础概念、类型,以及在MIS开发中如何利用触发器来实现数据校验、数据共享和复杂数据完整性的维护。 1. **Oracle触发器概述** Oracle触发器是一种数据库对象,它定义了在特定数据库...

    oracle 触发器可以参考书写对于学习有帮助

    学习Oracle触发器,需要理解PL/SQL编程基础,掌握如何创建、修改和删除触发器,以及如何在实际项目中适当地应用它们。此外,还要注意避免触发器的滥用,以免引入不必要的复杂性和性能问题。 在学习过程中,可以参考...

    包装材料管理软件:Oracle二次开发-Oracle二次开发入门+Oracle触发器与存储过程+报表设计与生成

    包装材料管理软件:Oracle二次开发_Oracle触发器与存储过程.docx 包装材料管理软件:Oracle二次开发_PL-SQL程序设计.docx 包装材料管理软件:Oracle二次开发_包装材料管理软件概述.docx 包装材料管理软件:Oracle二...

    基于Oracle触发器的后门隐藏技术研究.pdf

    【Oracle触发器后门隐藏技术】是网络安全领域中一种利用关系型数据库——Oracle数据库特性进行后门植入和隐藏的方法。这种技术尤其在云计算环境中,由于Oracle数据库的重要地位,成为研究的重点。后门,通常被称为...

    Oracle 触发器与存储过程

    在Oracle 10g中,触发器和存储过程是两个关键的数据库编程元素。触发器是一种数据库对象,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行,允许开发者在数据修改时执行复杂的业务规则和逻辑。存储...

    把触发器说透

    标题和描述中的“把触发器说透”指向了一个深度探讨Oracle数据库中触发器概念和技术的教程,这不仅仅是关于触发器的基础知识,更是包含了作者长期实践经验的精华总结。下面,我们将根据给定的内容,深入解析触发器的...

    oracle_基本的几种触发器

    ### Oracle基本的几种触发器详解 #### Instead-of 触发器 在Oracle数据库中,**Instead-of触发器**主要用于处理视图上的数据操作语言(DML)操作,如`INSERT`、`UPDATE`或`DELETE`。由于视图本身不是实际的数据存储...

    oralce触发器

    ### Oracle 触发器详解及应用案例 ...以上内容详细介绍了Oracle触发器的基础概念、如何编写复杂的DML触发器、以及触发器在实际场景中的应用案例。通过合理设计和使用触发器,可以显著提高数据库系统的功能性和可靠性。

    一个完整的ORACLE的触发器代码

    ### ORACLE触发器知识点解析 #### 一、触发器概述 在Oracle数据库中,触发器是一种存储过程,它被设计为当特定事件(如数据插入、更新或删除)发生时自动执行。触发器可以用于执行复杂的业务逻辑或者数据完整性...

    oracleDML触发器1.ppt

    这意味着,当试图对视图执行DML操作时,替代触发器将执行自定义的逻辑,而不是尝试在基础表上执行操作。 10.4 系统触发器 系统触发器是Oracle自动创建并触发的,它们响应数据库级别的事件,如数据库启动、用户登录...

    MySQL与Oracle 差异比较之六触发器

    Oracle的`OR REPLACE`关键字允许在已有触发器的基础上进行修改,而MySQL则需要先删除再创建,如果需要更新触发器的话。 其次,Oracle的触发器可以同时处理多种事件(INSERT, UPDATE, DELETE),但MySQL的触发器则...

    Oracle数据库基础教程[孙风栋等编著][习题解答

    在深入学习后,可以进一步探索Oracle的高级特性,如视图、存储过程、触发器、游标、分区表和物质化视图等,这些都极大地丰富了数据库的使用方式和功能。同时,Oracle提供的PL/SQL编程语言使数据库的逻辑处理更为灵活...

    oracle存储过程及触发器总结

    #### 七、触发器基础 触发器是在特定事件(如插入、更新或删除)发生时自动执行的一段PL/SQL代码。触发器可以确保数据的完整性,并在某些情况下提供审计功能。 触发器的基本语法如下: ```sql CREATE TRIGGER ...

Global site tag (gtag.js) - Google Analytics