oracle触发器浅析

2024-09-03 21:58
文章标签 oracle 触发器 浅析

本文主要是介绍oracle触发器浅析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.定义:数据库触发器是一个与表相关联的,存储的pl/sql程序
2.作用:每当一个特定的数据操作数据(insert,update,delete)在指定的表上操作时,oracle自动滴执行触发器中的语句序列

3.语法:create [or replace] trigger 触发器名before/After(执行前/后出发) insert(执行操作insertupdatedelete[of 列名])on emp(绑定表)[for each row [when 条件]]Sql语句块

4.触发器类型
语句级触发器
在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行
行级触发器
触发语句作用的每一条记录都被触发,在行级触发器中使用:old和:new伪记录变量,识别值的状态。
5.应用场景:
复杂的安全性检查
–应用场景1:实施复杂性安全检查
–禁止在非工作时间插入新员工

/*
1.周末 to_char(sysdate,'day') in ('星期六','星期日')
2,下班前后  to_char(sysdate,'hh24') not between 9 and 17
*/
create or replace trigger testemp
before insert 
on emp
beginif to_char(sysdate,'day') in ('星期六''星期日') or to_char(sysdate,'hh24') not between 9 and 17 then
--抛出异常
--触发器自定义异常raise_application_error(-20001,'禁止在非工作时间增加新员工');end if;
end;
/
数据的确认
/*
场景应用2:数据的确认
涨工资:涨后的薪水不能少于涨钱的薪水
1.:old和:new 表示同一条记录
:old是操作前的数据
:new 是操作后的数据*/
create or replace trigger checkemp
before update
on 表名
for each row
begin
--涨后的薪水大于涨前的薪水
if :old.sal > :new.sal thenraise_application_error(-20002,'涨后的薪水大于涨前的薪水')
end if; end;
/
数据库审计
/*
应用场景3:数据库的审计:数据的审计
给员工涨工资,当涨后的薪水超过6000时加入审计表
*/
create or replace trigger shenjiemp
after update
on 表名
for each row
begin--当涨后薪水超过6000,加入审计表if :new.字段 > 6000 theninsert into 表名 values(:new.字段||' ':new.字段||' ':new.字段)end if; 
end;
/
数据的备份和同步
/*
应用场景4:数据的备份和同步
当给员工涨工资后,自动备份新的表
*/
create or replace trigger backupemp
after update
on 表名
for each row
begin--同步备份update 备份表名 set 字段=:new.字段 where 字段=字段
end;
/

这篇关于oracle触发器浅析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134164

相关文章

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

浅析Java如何保护敏感数据

《浅析Java如何保护敏感数据》在当今数字化时代,数据安全成为了软件开发中至关重要的课题,本文将深入探讨Java安全领域,聚焦于敏感数据保护的策略与实践,感兴趣的小伙伴可以了解下... 目录一、Java 安全的重要性二、敏感数据加密技术(一)对称加密(二)非对称加密三、敏感数据的访问控制(一)基于角色的访问