我的问题是关于插入后创建触发器?

时间:2018-10-31 10:22:37

标签: oracle database-trigger

我需要在插入后创建一个触发器,但是我见过的ex无法正常工作,有人可以帮我解决类似触发器的问题吗? 非常感谢!

一个例子是:

CREATE OR REPLACE TRIGGER TRG_ACCT_IDW
AFTER INSERT ON ACNTGROUPS FOR EACH ROW BEGIN IF :NEW.TYPE = '1' then INSERT INTO IDWORKS_HC (ACCOUNT,IDW_CATEGORYNO,GRTYPE) VALUES (:NEW.ACCOUNT,:NEW.GROUP_,:NEW.TYPE); END IF; END;

2 个答案:

答案 0 :(得分:3)

您的触发器应类似于:

CREATE OR REPLACE TRIGGER ticket_notifice_t
  AFTER INSERT ON ticket
  FOR EACH ROW
BEGIN
  INSERT INTO ticket_notifice
    (id,
     useridrichiedente,
     stato,
     nosologico)
  VALUES
    (:new.id,
     :new.useridrichiedente,
     :new.stato,
     :new.nosologico);
END ticket_notifice_t;
/

请注意,在每次引用FOR EACH ROW记录之前,都存在new和冒号(:)。

此外,这还假定您要在其上创建触发器的架构对ticket和ticket_notifice表具有特权,并且可以创建触发器。

答案 1 :(得分:0)

大多数时间ORA-00942“表或视图不存在”是特权中的问题。

尝试向公众授予权利:

GRANT ALL ON TICKET_NOTIFICE TO PUBLIC

如果这行得通,您知道您搞砸了配置。

检查哪些用户需要哪些权限。我认为在您的情况下,执行的uesr需要在insert上使用TICKET_NOTIFICE