если вставить ошибку в создании триггера оракула? - PullRequest
0 голосов
/ 04 июня 2010
  CREATE TRIGGER Background_Process_Report_trit
AFTER INSERT
ON Background_Process_Report
FOR EACH ROW
IF INSERT(PROCESS_NAME)
BEGIN
    SET EXECUTION_TIMESTAMP := NEW.TIMESTAMP; 
END;
/

имя_процесса - столбец в моей таблице Background_Process_Report. Но я хочу обновлять каждый раз, когда имя_процесса создается (приложением java), запускать обновление времени в таблице EXECUTION_TIMESTAMP. но выдает ошибку компиляции ..

ошибка:

IF INSERT(PROCESS_NAME)
*
ERROR at line 5:
ORA-04079: invalid trigger specification

как исправить эту ошибку

1 Ответ

4 голосов
/ 04 июня 2010

Если EXECUTION_TIMESTAMP - это, как вы говорите, таблица, то в ней должен быть столбец, который вы хотите обновить, назовем его TIMESTAMP_COL. Триггер будет что-то вроде:

CREATE TRIGGER Background_Process_Report_trit
AFTER INSERT
ON Background_Process_Report
FOR EACH ROW
WHEN (NEW.PROCESS_NAME IS NOT NULL)
BEGIN
    UPDATE EXECUTION_TIMESTAMP
    SET TIMESTAMP_COL = NEW.TIMESTAMP
    WHERE ???;  -- Change ??? to the appropriate condition
END;
/

Я предположил, что под "IF INSERT (PROCESS_NAME)" вы подразумеваете "если в PROCESS_NAME вставлено ненулевое значение" и создали соответствующее предложение WHEN.

...