Oracle 触发器 trigger

本文深入解析了触发器的概念,包括其定义、语法结构以及如何在实际场景中创建和使用触发器。通过具体示例展示了如何创建行级触发器,以及如何在触发器中使用新旧表记录对象进行条件判断。此外,还介绍了如何禁用、启用和删除触发器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  触发器:

  当用户登录/退出或者操作某个数据对象或者进行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;

  复制代码(编辑:雷林鹏 来源:网络)

转载于:https://www.cnblogs.com/pengpeng1208/p/9485477.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值