思考:Oracle某表数据发生变化自动更新其他表内容
--创建触发器处理s
CREATE OR REPLACE TRIGGER FRIST_TRIGGER --触发器名称FRIST_TRIGGER
AFTER DELETE or INSERT or UPDATE --时间after 触发的事件DELETE 即:进行删除后触发
on tablea --监控tablea表 即:这个触发事件用于tablea表上
BEGIN
if DELETING then
DELETE from bd_defdoc where pk_defdoclist='1001A810000000005ALG'; --1001A810000000005ALG为建的自定义档案(薪资方案)的主键
insert into BD_DEFDOC select * from WA_XZFA;
elsif INSERTING then
DELETE from bd_defdoc where pk_defdoclist='1001A810000000005ALG';
insert into BD_DEFDOC select * from WA_XZFA;
elsif UPDATING then
DELETE from bd_defdoc where pk_defdoclist='1001A810000000005ALG';
insert into BD_DEFDOC select * from WA_XZFA;
end if; END;
--创建触发器处理e
备注:
--ORACLE查出表所有的触发器及触发器详细信息
--1、查all_triggers表得到trigger_name
select trigger_name from all_triggers where table_name='HI_PSNDOC_BAD';
--查询用户所有触发器
select * from user_triggers;
--2、根据trigger_name查询出触发器详细信息
select text from all_source where type='TRIGGER' AND name='FRIST_PANBAD';
--3、禁用触发器
alter trigger tri_uname(触发器名字) disable;
--禁用某个表上的触发器
alter table table_name(表名) diable all triggers;
--4、激活触发器
alter trigger tri_uname(触发器名字) enable;
--5、删除触发器
DROP TRIGGER FRIST_PANBAD;
注意事项:触发器与表的更新顺序逻辑:表某一行更新->执行触发器,表的下一行更新->执行触发器。