SQL Ошибка триггера (ORA-00942: таблица или представление не существует) - PullRequest
0 голосов
/ 24 февраля 2020

Я создаю этот sql триггер:

CREATE OR REPLACE TRIGGER create_event_from_task BEFORE INSERT ON llx_projet_task
BEGIN
    INSERT INTO llx_actioncomm (priority, fulldayevent, location, label, fk_element, elementtype, fk_project, datep, datef, percentage, note)
    SELECT 0, 0, '', 'prova', id, 'project_task', fk_project, date_start, date_end, progress, description
    FROM inserted;
END;
/

Но когда я выполняю, выдает следующие ошибки:

Errors: TRIGGER CREATE_EVENT_FROM_TASK
Line/Col: 2/2 PL/SQL: SQL Statement ignored
Line/Col: 4/7 PL/SQL: ORA-00942: table or view does not exist

Кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Я думаю, что он получил эту ошибку из-за запроса выбора внутри триггера. Проверьте, есть ли у пользователя, вызвавшего триггер, разрешение на выполнение, выберите из «вставленной» таблицы.

https://www.tekstream.com/resource-center/ora-00942-table-or-view-does-not-exist/

Ora-00942 означает, что вы пытаетесь выполнить инструкцию SQL, которая ссылается на несуществующую таблицу или представление. Существует несколько возможных причин возникновения ошибки «таблица или представление не существует», в том числе:

1) Referencing a table or view that does not exist
2) Using an unauthorized synonym
3) Using an expression of view where a table is required
4) Attempting to use a table without proper permission or privilege
0 голосов
/ 24 февраля 2020

inserted является частью SQL Server. Я думаю, что вы хотите:

BEGIN
    INSERT INTO llx_actioncomm (priority, fulldayevent, location, label, fk_element, elementtype, fk_project, datep, datef, percentage, note)
        SELECT 0, 0, '', 'prova', :new.id, 'project_task', 
               :new.fk_project, :new.date_start, :new.date_end, 
               :new.progress, :new.description
        FROM dual;
END;
...