【赵强老师】利用数据库触发实现复杂的安全性检查
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,一、什么是触发器数据库触发器是一个与表相关联的,存储的PL/SQL 语句。每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义的语
千家信息网最后更新 2026年11月03日【赵强老师】利用数据库触发实现复杂的安全性检查
一、什么是触发器
数据库触发器是一个与表相关联的,存储的PL/SQL 语句。每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义的语句序列。
触发器的应用场景如下:
- 复杂的安全性检查
- 数据的确认
- 数据库审计
- 数据的备份和审计
二、创建Oracle触发器的语法
CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER } {INSERT | DELETE | UPDATE [OF column [, column …]]} [OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...] ON [schema.]table_name | [schema.]view_name [REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}] [FOR EACH ROW ] [WHEN condition] PL/SQL_BLOCK | CALL procedure_name;其中:
- BEFORE 和AFTER指出触发器的触发时序分别为前触发和后触发方式,前触发是在执行触发事件之前触发当前所创建的触发器,后触发是在执行触发事件之后触发当前所创建的触发器。
- FOR EACH ROW选项说明触发器为行触发器。
- 行触发器和语句触发器的区别表现在:行触发器要求当一个DML语句操走影响数据库中的多行数据时,对于其中的每个数据行,只要它们符合触发约束条件,均激活一次触发器;而语句触发器将整个语句操作作为触发事件,当它符合约束条件时,激活一次触发器。
- 当省略FOR EACH ROW 选项时,BEFORE 和AFTER 触发器为语句触发器,而INSTEAD OF 触发器则只能为行触发器
- REFERENCING 子句说明相关名称,在行触发器的PL/SQL块和WHEN 子句中可以使用相关名称参照当前的新、旧列值,默认的相关名称分别为OLD和NEW。触发器的PL/SQL块中应用相关名称时,必须在它们之前加冒号(:),但在WHEN子句中则不能加冒号。
- WHEN 子句说明触发约束条件。Condition 为一个逻辑表达时,其中必须包含相关名称,而不能包含查询语句,也不能调用PL/SQL 函数。WHEN 子句指定的触发约束条件只能用在BEFORE 和AFTER 行触发器中,不能用在INSTEAD OF 行触发器和其它类型的触发器中。
- 当一个基表被修改( INSERT, UPDATE, DELETE)时要执行的存储过程,执行时根据其所依附的基表改动而自动触发,因此与应用程序无关,用数据库触发器可以保证数据的一致性和完整性。
三、Oracle触发器的类型
- 行级触发器:对DML语句影响的每个行执行一次,例如,一条update语句更新了100条数据,如果我们针对update定义了行级触发器,那么行级触发器将会被触发100次 。
- 语句级触发器:对每个DML语句执行一次,例如,一条update语句更新了200条数据,如果我们针对update定义了语句级触发器,那么语句级触发器将会被触发1次 。
四、利用数据库触发实现复杂的安全性检查
/*实施复杂的安全性检查禁止在非工作时间插入新员工周末:to_char(sysdate,'day') in ('星期六','星期日')上班前和下班后:to_number(to_char(sysdate,'hh34')) not between 9 and 18 */create or replace trigger securityempbefore inserton empbegin if to_char(sysdate,'day') in ('星期六','星期日') or to_number(to_char(sysdate,'hh34')) not between 9 and 18 then --禁止insert操作 抛出异常 raise_application_error(-20001,'禁止在非工作时间插入新员工'); end if;end;/- 在上面的例子中,我们禁止在非工作时间插入新员工,从而实现执行insert语句时候的安全性检查。
触发器
语句
数据
数据库
名称
子句
安全
安全性
检查
星期
条件
复杂
事件
员工
时间
应用
冒号
是在
激活
类型
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
高科技互联网
互联网的科技
A股互联网金融科技公司
科技制造互联网公司
奇酷互联网科技
远信互联网科技
百单互联网科技有限公司
智慧科技互联网
兼蜜互联网科技
国外互联网科技网站
互联网科技公司的市场部门
内蒙古九一互联网科技
互联网企业科技类企业如何做账
杭州披云加互联网科技有限公司
领航科技大厦互联网公司
互联网科技融合创新
有人说阿里系是互联网科技企业
互联网科技手机排行榜
现代互联网科技公司
瑞安市蟠桃会互联网科技有限公司
耶加雪菲
互联网科技活动banner
互联网与科技金融数据
金融科技 互联网金融
互联网金融 金融科技
北京互联网络科技有限公司
天扬科技互联网广告
深圳互联网科技的发展
互联网科技股为什么大涨
广州三三互联网科技有限公司