将触发器更改为插入后

Change trigger to after insert

我不知道如何更改触发器以像插入后一样工作

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;
/

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

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;