Oracle触发器

触发器

为什么要用触发器呢?
因为Oracle没有主键自增ID,所以可以用触发器来实现
我用触发器是因为项目组中要给一些数据加上标识字段,然后因为项目代码中有很多对这个表的插入操作,改起来太麻烦了,所以使用了触发器
语法:

create [or replace] trigger trigger_name
{before | after} trigger_event
on table_name
[for each row]
[when trigger_condition]
trigger_body

trigger_name:触发器名称
trigger_event:触发条件 before是在…之前 after是在…之后
before insert是在新增之前 也可以before insert or update…这样也可以
还可以before insert or update of username 这是指定字段,也可以不指定
table_name:表名
when trigger_condition:触发条件
trigger_body:触发体

这是我写的触发器:

create or replace trigger update_statue
  before insert on dbpm_documents
  for each row
DECLARE
  PRAGMA AUTONOMOUS_TRANSACTION;
begin
  if :new.process_code in ('ITADVANCEDPROGRAM',
                           'StrategeProcess',
                           'FawjfMaterialExitTicket',
                           'FawjfFilingOpenProcess',
                           'FawjfOTDBPM',
                           'FawJfDemManager',
                           'FawjfCodingProcess',
                           'SUPPLIERCHANGE',
                           'FawjfExitTicket',
                           'FawjfFilingProcessPj') then
    :new.text_attribute50 := 'Y';
  else
    :new.text_attribute50 := 'N';
  end if;
end;

:new代表新增的行数据
:old代表update之前的数据
因为这个触发条件时在insert之后触发,所以没有:old对象

有个写的特别详细的博主,可以学习一下
https://blog.csdn.net/cc_0101/article/details/80664561

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值