ORACLE触发器 得到的数据总是之前的数据,高分求解

create or replace trigger ggxx_s_update
after update on up_org_station
for each row
declare
-- local variables here
PRAGMA AUTONOMOUS_TRANSACTION;

begin
GGXX;
COMMIT;
end ggxx_s_update;

这个的意思是up_org_station 表发生更新操作时执行存储过程GGXX
可是up_org_station 更新操作后得到的数据总是之前的,不如从1改为2,存储过程得到的数据是1,从2改为3,得到的就是2,这是怎么回事呢?
最新回答
陌生的挚爱

2024-11-22 13:42:17

create or replace trigger ggxx_s_update
BEFORE update on up_org_station
for each row
declare
-- local variables here
PRAGMA AUTONOMOUS_TRANSACTION;

BEGIN
update up_org_station_tmp
SET 字段1= :NEW.字段1,
--********
-- 剩下的字段你自己写 up_org_station_tmp 表结构与up_org_station一致
WHERE up_org_station_tmp.id = :OLD.id
COMMIT;
GGXX; --存储过程中 up_org_station 改为 up_org_station_tmp
COMMIT;
end ggxx_s_update;
春夜浅

2024-11-22 20:36:21

把存储过程改改
吧唧你一口

2024-11-22 15:54:21

存储过程是干嘛用的,有没有对数据进行操作?还是只是输出结果?
追问
存储过程执行的是 将更新后的数据取出来插入另一个表里  可以取出来的总是更新之前的数据
追答
把你过程里的语句贴上来
追问
太长了  贴不上来   好像不是存储过程的问题  是PRAGMA AUTONOMOUS_TRANSACTION; 的问题
枫熙槿晨

2024-11-22 12:57:21

将after update on up_org_station 中的after 改为before试试
追问
改过了  还是一样的问题