欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle 触发器 trigger

程序员文章站 2022-06-24 16:02:08
触发器: 当用户登录/退出或者操作某个数据对象或者进行DDL(建表,建view)引起某个储存过程的值的变化,把这个隐含被调用的过程,称为触发器。 语法 创建触发器 获取新旧表记录对象 禁用/启用触发器 删除触发器 ......

触发器:

        当用户登录/退出或者操作某个数据对象或者进行DDL(建表,建view)引起某个储存过程的值的变化,把这个隐含被调用的过程,称为触发器。

语法

CREATE OR REPLACE TRIGGER trigger_name
{before|AFTER}
{insert,delete,update of column,column}
on table_name
for  each row --表示这是一个行级触发器
when
begin
trigger_body;
end;

  

创建触发器

create or replace trigger change_teacher
before insert or update or delete on teachers
begin
if to_char(sysdba,'HH24') not berween '8' and '17' ) 
THEN
RAISE_APPLICATION_ERROR(-20005,'在非工作时间不能改变教师信息。');
END IF;
END change_teacher;

获取新旧表记录对象

create or replace trigger tri_salary
before  update  on
scott.emp
for
each row
begin
 if :new.sal<:old.sal then
 dbms_output.put_line('工资不能低于原来工资');
 raise_application_error(-20005,'请不要修改');
 else
 dbms_output.put_line('原来是工资是'||:old.sal);
end;

禁用/启用触发器

alter trigger 触发器名 disable(enable);

删除触发器

DROP TRIGGER salary_check;