暂无图片
关于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
打赏 0
暂无图片
广州_老虎刘

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

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

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
sqlnet.encryption这个参数有什么用,在sqlnet.ora里面添加了内容如何在不重启监听的情况下使其生效。
回答 3
可以参考墨天轮上的一篇文章,sqlnet.ora修改以后无需重启,对新连接自动生效。但是不是很明白为什么要加密,这种对性能是有一定的影响的,我在银行很多年,都没用到有需要这种加密的。搞不好还有bug啥
如何一次性批量保存 oracle的视图?
回答 2
已采纳
不太明白什么是“一次性批量保存”?要备份的话,可以用expdp加上INCLUDEview参数,把视图导出来
有什么方式可以查询正在执行的ORACLE sql语句?
回答 2
根据SID,获取正在执行的sql,参考示例:DECLARECURSORcursql(ppresqladdrVARCHAR2)ISSELECTt.sqltextFROMv$sqltextwithnewl
ORACLE 分区表问题
回答 2
19Calert日志打印出来的添加分区信息的分区条件,也是有空格,为什么会这样?TABLESYS.WRPREPORTS:ADDEDINTERVALPARTITIONSYSP219(3820)VALUE
oracle的表结构 是不是直接在用户下面?
回答 1
已采纳
oracle的每个用户都有个自己的schema,而任意对象都是在某一个schema下的,表对象自然也不例外。所以你这么理解也是没问题的
虚拟机如何做到添加磁盘不重启
回答 4
谢谢专家
Oracle的recover的消除脏数据的最小scn如何通过视图查询到
回答 3
最低肯定是看你数据库备份之后新产生的归档中的最小scn了。
oracle怎么删除唯一键的索引?
回答 2
已采纳
去掉约束再删除索引
Oracle中视图和数据表的区别以及关系是什么?
回答 1
已采纳
1、视图和数据表的区别:1)视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的数据表;2)视图没有实际的物理记录,而数据表有;3)数据表是内容,视图是窗口;4)数据表占用物理空间,而视图
Oracle 中 一个事务COMMIT后能ROLLBACK吗?
回答 1
已采纳
在一个事务中,rollback和commit都代表结束一个事务,想恢复可以用flashback