Oracle学习笔记二十六:触发器的使用「建议收藏」

Oracle学习笔记二十六:触发器的使用「建议收藏」一、触发器简介 • 什么是触发器(trigger) • 触发器在数据库里以独立的对象存储,由数据库产生某一类事件而启动运行,即触发器是当某个事件发生时自动地隐式运行。 • 触发器的特点 •

Oracle学习笔记二十六:触发器的使用

一、触发器简介

• 什么是触发器(trigger)

  • 触发器在数据库里以独立的对象存储,由数据库产生某一类事件而启动运行,即触发器是当某个事件发生时自动地隐式运行。

• 触发器的特点

  • 由特定事件触发,外部无法调用。

  • 触发器无参数。

  • 一个表上最多可有12个触发器。

• 触发器的作用

  • 常用来完成由数据库的完整性约束难以完成的复杂业务规则的约束,或用来监视对数据库的各种操作,实现审计的功能。

二、触发器分类

1)DML触发器

  • Oracle可以在执行DML语句时运行触发,同时可以指定在DML操作前或操作后进行触发,指定对每个行或语句操作上进行触发。

2)替代触发器

  • 由于在Oracle里,不能直接对由两个以上的表建立的视图进行操作,所以给出了替代触发器。Oracle专门为进行视图操作的一种处理方法。

3)系统触发器

  • Oracle提供了第三种类型的触发器叫系统触发器。它可以在Oracle数据库系统的事件中进行触发,如Oracle系统的启动与关闭等。

三、DML触发器

3.1、DML触发器阐述

  • 也就是在对表进行insert/delete/update操作时会执行的触发器。

3.2、DML触发器语法

  CREATE [OR REPLACE] TRIGGER 触发器名称

    {BEFORE|AFTER}

    {INSERT|DELETE|UPDATE[ OF COLUMN1|COLUMN2……]}

    ON {[SCHEMA.]表名|{[SCHEMA.]视图名}

    [FOR EACH ROW]

    [WHEN 条件表达式]

  BEGIN

    [语句块]

  END;

3.3、DML触发器实例

• 增加一个测试记录表,将增删改的记录插入到此表中。

CREATE TABLE "SYSTEM"."EMP_HIS" 
(
    "EMPNO" VARCHAR2(10 BYTE) NOT NULL ENABLE,
    "ENAME" VARCHAR2(20 BYTE) NOT NULL ENABLE,
    "SAL" NUMBER(8, 2),
    "COMM" NUMBER(8, 2),
    "REM" VARCHAR2(20 BYTE)
)
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
    STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL
    DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT )
TABLESPACE "SYSTEM";

1)增加记录

create or replace trigger triEmpForInsert
    after insert on emp for each row
begin
    insert into emp_his (empno,ename,sal,comm,rem) values (:new.empno,:new.ename,:new.sal,:new.comm,"增加后");
end;

2)删除记录

create or replace trigger triEmpForDelete
    before delete on emp for each row
begin
    insert into emp_his (empno,ename,sal,comm,rem) values (:old.empno,:old.ename,:old.sal,:old.comm,"删除前");
end;

3)修改记录

create or replace trigger triEmpForUpdate
    after update on emp for each row
begin
    insert into emp_his (empno,ename,sal,comm,rem) values (:old.empno,:old.ename,:old.sal,:old.comm,"更新前");
    insert into emp_his (empno,ename,sal,comm,rem) values (:new.empno,:new.ename,:new.sal,:new.comm,"更新后");
end;

 

原文地址:https://www.cnblogs.com/atomy/archive/2022/06/16/16376953.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5103.html

(0)
上一篇 2023-05-22
下一篇 2023-05-23

相关推荐

  • Python Tuple定义及常见操作

    Python Tuple定义及常见操作Python中Tuple是一种不可变序列,使用小括号”()”来定义。Tuple中可以存储任意类型的数据,包括数字、字符串、列表等等。Tuple拥有列表(List)所有的基本操作,比如切片,索引,迭代操作等。在使用元组时,需要注意它是不可变的,这意味着我们不能直接对元组进行增加、删除或修改操作。然而,我们可以通过创建一个新的元组来对原有元组进行操作或使用内置函数。

    2023-12-05
    104
  • Python GUI编程:安装使用Tkinter进行界面设计

    Python GUI编程:安装使用Tkinter进行界面设计Graphical User Interface(图形用户界面)是现代软件中不可缺少的一部分,它提供了一种更亲近、直观的界面,使用户能够以更方便的方式与程序交互。而Python Tkinter(Toolkit Interface)是Python标准库中内置的一款GUI工具包,它提供了创建基本GUI应用程序所需的组件和控件,并且容易学习和使用。

    2024-03-10
    99
  • Python工程师必备开发环境——Spyder 5.3.3

    Python工程师必备开发环境——Spyder 5.3.3Python语言已经成为目前最受欢迎的编程语言之一,其在数据分析、机器学习、科学计算等领域的应用越来越广泛。而一个优秀的Python开发环境是Python工程师必不可少的工具之一。Spyder 5.3.3以其易用性和高效性备受开发者喜爱,本文将详细介绍Spyder 5.3.3的优点和使用方法。

    2024-07-28
    38
  • mysql用户的管理

    mysql用户的管理– 创建用户 create user '用户名'@'ip地址' identified by 'password'; ip adress 可填%,即指可

    2023-03-08
    157
  • 陈胡:Apache SeaTunnel实现 非CDC数据抽取实践「建议收藏」

    陈胡:Apache SeaTunnel实现 非CDC数据抽取实践「建议收藏」导读: 随着全球数据量的不断增长,越来越多的业务需要支撑高并发、高可用、可扩展、以及海量的数据存储,在这种情况下,适应各种场景的数据存储技术也不断的产生和发展。与此同时,各种数据库之间的同步与转化的需

    2023-05-18
    146
  • 批量修改sql表内列内容_sql根据条件修改字段值

    批量修改sql表内列内容_sql根据条件修改字段值– 危险操作,处理前记得先备份数据库 1 declare @sql varchar(500),@tbname varchar(100) 2 begin 3 4 — 创建游标 5 declare c

    2023-03-26
    164
  • 使用Python max函数获取序列中的最大值

    使用Python max函数获取序列中的最大值Python中的max函数是内置函数之一,它可以返回给定可迭代对象中最大的元素值。下面给出一个简单的示例,使用max函数求一个列表中的最大值:

    2023-12-12
    107
  • Mariadb之复制过滤器 – Linux

    Mariadb之复制过滤器 – Linuxmariadb的主从复制集群,默认情况下是把主库上的所有库进行复制,只要在主库上产生写操作,从库基于主库的二进制日志做重放,从而实现把主库的上的库表复制到从库;复制过滤器指的是我们仅复制一个或几个数据

    2023-03-18
    160

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注