触发器
为什么要用触发器呢?
因为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