Oracle - Trigger создан, но выдает ошибку каждый раз, когда данные обновляются - PullRequest
0 голосов
/ 27 октября 2011

Я создаю следующий триггер:

CREATE TRIGGER Trigger_UpdateTrainingDelivery
    AFTER DELETE OR INSERT OR UPDATE OF STARTDATE
    ON TPM_TRAININGPLAN
    BEGIN
      UPDATE TPM_PROJECTVERSION V
        SET TRAININGDELIVERYSTART = (SELECT MIN(STARTDATE) FROM TPM_TRAININGPLAN WHERE PROJECTID=V.PROJECTID AND VERSIONID=V.VERSIONID AND TRAININGPLANTYPE='prescribed')
    END;

Когда я его создаю, я получаю предупреждение:

Warnings: ---> 
   W (1): Warning: execution completed with warning
          <--- 

Тем не менее, он все равно создается.Когда я затем изменяю строку в TPM_TRAININGPLAN, я получаю сообщение об ошибке:

>[Error] Script lines: 12-12 ------------------------
 ORA-04098: trigger 'TPMDBO.TRIGGER_UPDATETRAININGDELIVERY' is invalid and failed re-validation
 Script line 12, statement line 1, column 7

Что-то не так с моим триггером?Я могу запустить оператор UPDATE в триггере сам по себе, и он работает нормально, поэтому я не думаю, что с этим что-то не так.

Ответы [ 3 ]

4 голосов
/ 27 октября 2011

Похоже, что в конце вашего оператора UPDATE пропущена точка с запятой.

Если вы запросите USER_ERRORS, вы получите ту же информацию об ошибке, которую SQL * Plus предоставит вамкоманда SHOW ERRORS без необходимости доступа к SQL * Plus.

SELECT line, position, text
  FROM user_errors
 WHERE name = 'TRIGGER_UPDATETRAININGDELIVERY'
 ORDER BY sequence
0 голосов
/ 27 октября 2011

Хорошо, я понял это.На самом деле это ошибка в Aqua Data Studio, которую я использую для выполнения запроса.По некоторым причинам, он не обрабатывает точки с запятой внутри триггеров правильно.Я сообщу об этой ошибке, но я нашел обходной путь:

File->Options->General
Uncheck: ';' Statement separator
0 голосов
/ 27 октября 2011

Какая ошибка сообщалась во время компиляции?

SQL> show errors trigger trigger_updatetrainingdelivery
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...