暂无图片
关于oracle的触发器
我来答
分享
刘晓华
2024-09-24
关于oracle的触发器
暂无图片 50M

简化后的员工请假记录表结构如下,销假时,web应用会把对应的记录删除,但是删除时delete后面的条件是不定的,有时按单号删除(delete from hr_h_vhis where ref_no=...) .有时按工号和日期删除(delete from hr_h_vhis where emid = '' and ledt = ''...), 我想写个trigger实现远程数据同步,insert 和update都没问题,delete不知道条件怎么实现?谢谢大师

create table HR_H_VHIS
(
emid CHAR(7) not null,   --工号
ledt DATE not null,          --请假日期
period VARCHAR2(10) not null  --请假时段(1天,上午,下午)

ledy NUMBER(2,1),          --请假天数(1  or 0.5)
lecd CHAR(2) not null,     --假期代码
ref_no VARCHAR2(16),     --单号

primary key(emid,ledt,period)
)

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
小草

CREATE OR REPLACE TRIGGER trg_hr_h_vhis_after_delete
AFTER DELETE ON HR_H_VHIS
FOR EACH ROW
DECLARE
v_emid CHAR(7);
v_ledt DATE;
v_period VARCHAR2(10);
BEGIN
– 获取被删除记录的值,需要保留那些字段就赋值一下
v_emid := :OLD.emid;
v_ledt := :OLD.ledt;
v_period := :OLD.period;
– 根据需要保留对应的字段信息。
insert into t_xxxx values(v_emid, v_ledt, v_period);
END;
/

暂无图片 评论
暂无图片 有用 1
暂无图片
广州_老虎刘

楼上的方法是可以的, 把insert 换成 delete 就ok了

BEGIN
 delete from 远端表 where emid=:old.emid and ledt=:old.ledt and period=:old.period;
END;

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏