【问题标题】:"ORA-04072: invalid trigger type" error. What is the problem?“ORA-04072:无效的触发器类型”错误。问题是什么?
【发布时间】:2021-05-17 18:52:11
【问题描述】:
create or replace trigger "BILET_VANDUT"
for each row
AFTER insert on "AT_BILETE"
UPDATE AT_SPECTACOLE
SET s.NR_BILETE_VANDUTE= s.NR_BILETE_VANDUTE+1 FROM AT_SPECTACOLE s , AT_BILETE b WHERE s.ID_SPECTACOL=b.SPECTACOL;
 
end;

【问题讨论】:

    标签: sql oracle triggers


    【解决方案1】:

    直接的问题是您的从句方式已经过时了;你开始:

    create or replace trigger "BILET_VANDUT"
    for each row
    AFTER insert on "AT_BILETE"
    

    但应该是的

    create or replace trigger "BILET_VANDUT"
    AFTER insert on "AT_BILETE"
    for each row
    begin
    

    (正如@a_horse_with_no_name 指出的那样,您也缺少 PL/SQL begin)。

    不过,您的更新也是错误的;你不能更新 from 的东西。您可能只想:

    UPDATE AT_SPECTACOLE
    SET NR_BILETE_VANDUTE= NR_BILETE_VANDUTE+1;
    

    当您可以同时从不同的会话中进行多个插入时,您将会遇到一致性问题。在需要时计算这些计数或总数通常更简单,作为查询的一部分,或者如果您想隐藏一点,则使用视图;并且视图可以在必要时实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      相关资源
      最近更新 更多