`

oracle中触发器

阅读更多
1. oracle触发器
------------------------------
create table t_booktype(
  id number not null,
  typename varchar2(20),
  num number,
  constraint booktype_pk_id primary key(id)
);

insert into t_booktype(id, typename, num) values (1, '计算机类', 3);
insert into t_booktype(id, typename, num) values (2, '生物类', 1);

create table t_book(
  id number not null,
  bookname varchar2(20),
  typeid number,
  constraint book_pk_id primary key(id),
  constraint book_booktype_fk_id foreign key(typeid) references t_booktype(id)
);

insert into t_book(id, bookname, typeid) values (1, 'java编程思想', 1);
insert into t_book(id, bookname, typeid) values (2, '一头扎进Java', 1);
insert into t_book(id, bookname, typeid) values (3, '生物起源', 2);
insert into t_book(id, bookname, typeid) values (4, 'xx3', 1);

create table t_book_log(
  actionuser varchar2(20),
  actionname varchar2(20),
  actiontime date
);
------------------------------
1) 触发器简介
具备某些条件,由数据库自动执行的一些DML操作行为。

2) 语句触发器
语句触发器针对整个表,作用整个表操作;
语法结构:
create trigger 触发器名称
before/after 触发动作
on作用对象
SQL> create trigger tr_book
before insert
on t_book
begin
  if user!='cc' then
    raise_application_error(-20001,'权限不足');
  end if;
end;
测试:
insert into t_book values(6,'xx7',2);

SQL> create trigger tr_book2
before update or delete
on t_book
begin
  if user!='CC' then
    raise_application_error(-20001,'权限不足');
  end if;
end;
测试:
delete from t_book where id=6;

触发器谓词:inserting、updating、deleting
SQL> create trigger tr_book_log
after insert or update or delete
on t_book
begin
  if updating then
    insert into t_book_log values(user,'update',sysdate);
  else if inserting then
    insert into t_book_log values(user,'insert',sysdate);
  else if deleting then
    insert into t_book_log values(user,'delete',sysdate);
  end if;
  end if;
  end if;
end;

3) 行触发器
行触发器针对行记录。
语法结构:
create trigger 触发器名称
before/after 触发动作
for each row
on 作用对象

触发器内置变量 :old :new
SQL> create trigger tr_book_add
after insert
on t_book
for each row
begin
  update t_booktype set num=num+1 where id=:new.typeId;
end;
SQL> create trigger tr_book_delete
after delete
on t_book
for each row
begin
  update t_booktype set num=num-1 where id=:old.typeId;
end;

4) 触发器禁用和开启
禁用触发器: alter trigger 触发器名称 disable;
SQL> alter trigger tr_book disable;

启用触发器: alter trigger 触发器名称 enable;
SQL> alter trigger tr_book enable;
分享到:
评论

相关推荐

    ORACLE中触发器和存储过程介绍相关代码

    在Oracle数据库系统中,触发器(Triggers)和存储过程(Stored Procedures)是两种非常重要的数据库对象,它们在数据管理、业务逻辑实现以及数据验证等方面起着关键作用。本资源包含与"ORACLE中触发器和存储过程介绍...

    ORACLE中触发器和存储过程介绍

    ### ORACLE中触发器和存储过程介绍 #### 一、Oracle简介 Oracle是一款提供数据库创建与管理功能的强大软件。它不仅支持关系型数据库,还具备对象型数据库的特点。Oracle允许用户利用自带的OUI(Oracle Universal ...

    利用 Oracle 系统触发器防止误删除表操作

    在Oracle 10g环境中,可以创建一个系统级别的触发器,用于阻止非`SYS`用户执行`DROP TABLE`或`TRUNCATE TABLE`命令。 #### 创建触发器脚本 ```sql CREATE OR REPLACE TRIGGER TRIGGER_UNDROPTABLE BEFORE DROP OR ...

    oracle_触发器的种类和触发事件

    Oracle触发器是一种特殊的存储过程,它可以在数据库中自动执行一些操作,主要用于实现数据的完整性、数据的安全性和业务逻辑的实现。触发器可以分为四种类型:DML触发器、DDL触发器、替代触发器和数据库事件触发器。...

    调试oracle触发器方法

    调试Oracle触发器是开发和维护数据库应用程序时的重要步骤,可以帮助我们找出潜在的错误和逻辑问题。下面我们将详细探讨如何调试Oracle触发器。 1. **PL/SQL Developer工具调试**: - PL/SQL Developer是一款强大...

    oracle触发器的创建与使用

    【Oracle触发器的创建与使用】是数据库管理中不可或缺的一部分,尤其在Oracle数据库系统中,触发器扮演着关键角色。触发器是一种存储过程,当特定的数据库事件发生时(如INSERT、UPDATE或DELETE操作),它会被自动...

    oracle 触发器实时调用java 中http接口

    总之,"Oracle触发器实时调用Java中HTTP接口"是一个数据库与应用程序实时通信的示例,涉及Oracle的触发器、存储过程和UTL_HTTP包,以及Java HTTP服务器的设计和实现。这样的设计需要对Oracle PL/SQL和Java网络编程有...

    Oracle Form 触发器的执行顺序

    在本文中,我们将详细介绍 Oracle Form 触发器的执行顺序,并对每个触发器的执行过程进行详细的解释。 1. 当打开 FORM 时: 在打开 FORM 时,会执行以下触发器: (1)PRE-FORM:在 FORM 打开时执行的触发器。 (2...

    Oracle中通过触发器来追踪用户的活动

    Oracle从Oracle8i开始引入了一类特殊触发器,它们不再局限于传统的DML事件,而是扩展到了系统级别,包括数据库启动触发器、DDL触发器和用户登录/注销触发器。这些触发器为数据库审计提供了新途径,特别是用户登录/...

    关于oracle触发器before和after的应用问题

    本文旨在深入解析Oracle触发器中的Before和After两种触发时机,以及它们在数据库管理和维护中的具体应用。 #### 触发器概述 触发器类似于过程和函数,具有声明、执行和异常处理的部分,但其独特之处在于由特定事件...

    oracle数据库触发器实例

    在Oracle数据库中,触发器是一种存储过程,它被设计为当特定事件(如数据插入、更新或删除)发生时自动执行。触发器可以用于执行复杂的业务逻辑或者数据完整性检查等操作。本文将通过三个具体的例子来展示如何创建和...

    Oracle触发器修改自身表

    1、行级触发器不支持 ...所以想要触发器对自身表数据做修该,则用行级触发器得到 :new 和 :old对象中的相关数据,然后将这样的数据保存到 package中,然后在语句级触发期中调用 package包中保存的数据,进行更新操作

    oracle创建触发器实例

    Oracle 创建触发器是一种数据库编程技术,用于在特定的数据库事件发生时自动执行一段代码。在这个实例中,我们看到的是一个防止非本地机器执行DDL(Data Definition Language)操作的触发器,比如`TRUNCATE`、`ALTER...

    oracle函数触发器游标等几个小例子

    在`oracle触发器语法.txt`中,你应该能找到关于触发器的创建、删除以及不同类型的触发器(如行级和语句级)的详细语法。 通过学习这些例子,你将能够更好地理解和应用Oracle中的函数、游标和触发器。实践是掌握这些...

    Oracle DML触发器在数据库编程中的应用.pdf

    Oracle DML 触发器在数据库编程中的应用 Oracle DML 触发器是关系型数据库系统中的一个重要组件,能够自动执行特定的操作,以响应数据库中的变化。本文将对 Oracle DML 触发器的工作原理、类型、使用方法等进行详细...

    Oracle中触发器示例详解

    在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块。 触发器类型 触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是...

    个人亲测oracle触发器调用java程序

    Oracle触发器是Oracle数据库中的一种机制,可以在数据库中执行特定的操作。在本文中,我们将介绍如何使用Oracle触发器调用Java程序。 一、加载Java程序 首先,我们需要将Java程序加载到Oracle数据库中。我们可以...

    Oracle触发器语法详解

    "Oracle触发器语法详解" Oracle 触发器是一种特殊的存储过程,它在插入、删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。触发器可以基于数据库的值使用户具有操作...

    oracle中记录用户登录信息的触发器的例子

    ### Oracle中记录用户登录信息的触发器实例解析 #### 一、背景介绍 在Oracle数据库管理中,确保数据安全是一项至关重要的任务。其中,记录用户的登录信息(如登录时间、用户名和客户端IP地址等)可以帮助管理员更...

    oracleDML触发器.ppt

    Oracle DML 触发器是 Oracle 中的一种机制,它可以在特定的事件发生时自动执行某些操作。触发器可以分为 DML 触发器、系统事件触发器、用户事件触发器、管理触发器等几种。 触发器的组成部分包括触发器名称、触发器...

Global site tag (gtag.js) - Google Analytics