触发器触发后没法以更新后的数据更新表

花生射手 2020-06-22 01:36:11
各位大佬,请教一下触发器的问题,我现在有两张表dm_delivbill和dm_verifydetail,我想在dm_verifydetail表有增行或修改的时候筛选出以它的主键cdelivbill_hid分组后ts字段的最大值,并且将筛选出来的数据里dr=1的修改表dm_delivbill对应字段 vdef15 = '0' ,dr=0的修改表dm_delivbill对应字段 vdef15 = '1'.dm_delivbill和dm_verifydetail的cdelivbill_hid字段相同为链接条件。
但是我写好如下语句后,执行生效,但每次我修改dm_verifydetail或增行dm_verifydetail表,都是以修改前的表为规则来改的,比如说我上午加了一行,下午再加一行上午这一行才会更新,请问是我语句写得有问题吗?
create or replace trigger yfyffp
after INSERT OR update of dr on dm_verifydetail
FOR EACH ROW
declare
PRAGMA AUTONOMOUS_TRANSACTION;
begin
update dm_delivbill
set vdef15 = '1'
where cdelivbill_hid in (SELECT a.cdelivbill_hid
FROM dm_verifydetail a
WHERE NOT EXISTS (SELECT 1
FROM dm_verifydetail b
WHERE b.ts > a.ts
group by cdelivbill_hid)
and a.dr = 0);

COMMIT;
update dm_delivbill
set vdef15 = '0'
where cdelivbill_hid in (SELECT a.cdelivbill_hid
FROM dm_verifydetail a
WHERE NOT EXISTS (SELECT 1
FROM dm_verifydetail b
WHERE b.ts > a.ts
group by cdelivbill_hid)
and a.dr = 1);

COMMIT;
end;
...全文
180 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhdz_bj 2020-06-24
  • 打赏
  • 举报
回复
after INSERT OR update of dr on dm_verifydetail
-->
after INSERT OR update on dm_verifydetail
udSoft2020 2020-06-23
  • 打赏
  • 举报
回复
尽量或是绝对避免用触发器

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧