我在使用 if 条件和更新时触发错误

被盗

在 ORACLE 中执行此触发器时出现以下错误:

 Table, View Or Sequence reference 'OCEX_COMI.FECHA_ASIG_GT' not allowed in this context.

这是我的触发器:

create or replace trigger ocex_comi_total
before insert or update of id_gt,fecha_asig_gt on ocex_comi
for each row
begin
if ((ocex_comi.fecha_asig_gt > to_date('2018-12-15','yyyy-mm-dd')) and 
 (ocex_comi.fecha_asig_gt < to_date('2019-01-01','yyyy-mm-dd'))) 
then
update ocex_comi cm set
cm.PAGO_COM = (select uea.total_bono_especial from OCEX_UEA uea                   
                join OCEX_GUIA_TRANSITO gt on uea.id_uea = gt.dest_id
                where gt.cod_gt=cm.id_gt)
where cm.id_gt = (select gt.cod_gt from ocex_guia_transito gt JOIN 
                  ocex_uea uea on uea.id_uea=gt.dest_id 
                        where gt.cod_gt=cm.id_gt);
else
update ocex_comi cm set
cm.PAGO_COM = (select uea.total_x_pnp from OCEX_UEA uea                   
                join OCEX_GUIA_TRANSITO gt on uea.id_uea = gt.dest_id
                where gt.cod_gt=cm.id_gt)
where cm.id_gt = (select gt.cod_gt from ocex_guia_transito gt JOIN 
                  ocex_uea uea on uea.id_uea=gt.dest_id 
                        where gt.cod_gt=cm.id_gt);
end if;
end;

好吧,我试图做的是,有了这个触发器,表“ocex_comi”的“PAGO_COM”列会自动从“ocex_uea”表中填充,这要归功于“total_bono_special”列(如果字段的日期“ date_asig_gt”包含)在 15-dec 到 31-dec 之间),如果没有,请填写“total_x_pnp”列(如果“fecha_asig_gt”字段的日期不在 15-dec 到 31-dec 之间。)一些想法或帮助我遇到了错误,谢谢。

亚历克斯·普尔

不要直接引用表格列;你需要参考newpseudorecord

if ((:new.fecha_asig_gt > to_date('2018-12-15','yyyy-mm-dd')) and 
 (:new.fecha_asig_gt < to_date('2019-01-01','yyyy-mm-dd'))) 
then

虽然我会使用日期文字:

if :new.fecha_asig_gt > date '2018-12-15' and 
 :new.fecha_asig_gt < date '2019-01-01'
then

(但不确定您是否真的想要>=而不是>。)

但是您还尝试更新逻辑的每个分支内表中的所有行,这听起来无论如何都不是您真正想要做的事情,并且如果您尝试,这将在运行时导致表发生变异错误。

不太清楚你的意图是什么,但我认为你想要更像:

...
then
  select uea.total_bono_especial
  into :new.PAGO_COM
  from OCEX_UEA uea                   
  join OCEX_GUIA_TRANSITO gt on uea.id_uea = gt.dest_id
  where gt.cod_gt = :new.id_gt;
else
  ...

在另一个分支中也有同样的事情。

由于这些查询非常相似,您可以用单个查询替换 if/else 逻辑,whoch 使用 case 表达式来决定要返回两个列值中的哪一个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用MySQL触发错误

来自分类Dev

如何使用陷阱命令触发错误

来自分类Dev

使用if条件触发更新

来自分类Dev

我使用Handler更新UI时未触发Android OnItemClickListener

来自分类Dev

我使用Handler更新UI时未触发Android OnItemClickListener

来自分类Dev

我使用$ skip时,使用BreezeJS的WebAPI会引发错误

来自分类Dev

当我使用Appcache清单请求外部资源时,为什么jQuery会引发错误?

来自分类Dev

当我尝试使用MacPorts Python时PyCharm引发错误

来自分类Dev

MySQL-行更新时触发错误

来自分类Dev

使用模拟时,IEDriverServer引发错误

来自分类Dev

如何使用PHP在DropZone中触发错误事件?

来自分类Dev

我在使用PHP和MySQL时遇到什么错误?

来自分类Dev

Laravel在使用where条件和更新时提供不同的结果

来自分类Dev

使用addWeighted()时,OpenCV引发错误的参数错误

来自分类Dev

使用条件更新触发器

来自分类Dev

在加载和滚动时触发我的功能

来自分类Dev

使用动态值更新远程视图会引发错误

来自分类Dev

当我尝试使用 Spring 和 file.properties 时,我看到错误

来自分类Dev

如何在触发器中使用 Case-When 和 Update?(我的代码中的错误)

来自分类Dev

是在条件下使用boost :: tribool时发生的编译器错误还是我的错误?

来自分类Dev

手动修改更新的列值时,HeidiSQL更新前触发错误

来自分类Dev

当我使用getExternalStorageDirectory()时,我得到了错误的目录

来自分类Dev

我在使用GetFullPathName时遇到错误

来自分类Dev

我使用MeshLambertMaterial时出现错误

来自分类Dev

在我使用strcat函数时发现错误

来自分类Dev

我使用.htaccess时出现错误500

来自分类Dev

我使用MeshLambertMaterial时出现错误

来自分类Dev

我使用cv :: merge时出现错误

来自分类Dev

我在使用闪回时遇到错误

Related 相关文章

  1. 1

    使用MySQL触发错误

  2. 2

    如何使用陷阱命令触发错误

  3. 3

    使用if条件触发更新

  4. 4

    我使用Handler更新UI时未触发Android OnItemClickListener

  5. 5

    我使用Handler更新UI时未触发Android OnItemClickListener

  6. 6

    我使用$ skip时,使用BreezeJS的WebAPI会引发错误

  7. 7

    当我使用Appcache清单请求外部资源时,为什么jQuery会引发错误?

  8. 8

    当我尝试使用MacPorts Python时PyCharm引发错误

  9. 9

    MySQL-行更新时触发错误

  10. 10

    使用模拟时,IEDriverServer引发错误

  11. 11

    如何使用PHP在DropZone中触发错误事件?

  12. 12

    我在使用PHP和MySQL时遇到什么错误?

  13. 13

    Laravel在使用where条件和更新时提供不同的结果

  14. 14

    使用addWeighted()时,OpenCV引发错误的参数错误

  15. 15

    使用条件更新触发器

  16. 16

    在加载和滚动时触发我的功能

  17. 17

    使用动态值更新远程视图会引发错误

  18. 18

    当我尝试使用 Spring 和 file.properties 时,我看到错误

  19. 19

    如何在触发器中使用 Case-When 和 Update?(我的代码中的错误)

  20. 20

    是在条件下使用boost :: tribool时发生的编译器错误还是我的错误?

  21. 21

    手动修改更新的列值时,HeidiSQL更新前触发错误

  22. 22

    当我使用getExternalStorageDirectory()时,我得到了错误的目录

  23. 23

    我在使用GetFullPathName时遇到错误

  24. 24

    我使用MeshLambertMaterial时出现错误

  25. 25

    在我使用strcat函数时发现错误

  26. 26

    我使用.htaccess时出现错误500

  27. 27

    我使用MeshLambertMaterial时出现错误

  28. 28

    我使用cv :: merge时出现错误

  29. 29

    我在使用闪回时遇到错误

热门标签

归档