【问题标题】:Change trigger to after insert将触发器更改为插入后
【发布时间】:2020-06-09 01:13:50
【问题描述】:

我不知道如何将触发器更改为插入后工作

CREATE OR REPLACE TRIGGER create_event_from_task BEFORE INSERT ON llx_projet_task
FOR EACH ROW
BEGIN
    INSERT INTO llx_actioncomm (priority, fulldayevent, location, label, fk_element, elementtype, fk_project, datep, datef, percentage, note)
    SELECT 0, 0, ' ', CONCAT(:new.ref, CONCAT(' - ', :new.label)), :new.id, 'project_task', :new.fk_project, :new.date_start, :new.date_end, :new.progress, :new.description
    FROM llx_projet_task;
END;
/

【问题讨论】:

  • 只是替换之后而不是之前.. 在 llx_projet_task 上插入后创建或替换触发器 create_event_from_task
  • 现在说 LLX_PROJET_TASK 表正在变异

标签: oracle plsql insert database-trigger


【解决方案1】:

您正在读取发生触发事件的表(由于发生此变异错误以获取更多详细信息check here)。您已经拥有 new.something 的价值,因此无需从表中获取值。只需使用该值

CREATE OR REPLACE TRIGGER create_event_from_task AFTER INSERT ON llx_projet_task
FOR EACH ROW
BEGIN
    INSERT INTO llx_actioncomm (priority, fulldayevent, location, label, fk_element, elementtype, fk_project, datep, datef, percentage, note)
   VALUES( 0, 0, ' ', CONCAT(:new.ref, CONCAT(' - ', :new.label)), :new.id, 'project_task', :new.fk_project, :new.date_start, :new.date_end, :new.progress, :new.description);
END;

【讨论】:

    猜你喜欢
    • 2021-03-08
    • 2016-10-13
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多