오라클 데이터베이스에 트리거를 작성하려고하는데 상태가 좋을 때 문제가 있습니다. 내가 그것을 사용하려고하면 은 내가 "잘못된 관계 연산자"트리거시기를 사용하거나 조건을 설정할 수 있습니까?
create or replace TRIGGER SQLTEST.TRIGGER_TESTE
AFTER INSERT OR UPDATE ON SQLDBA.VT_TABLE
FOR EACH ROW
WHEN (INSERTING OR NEW.FIELD_1 is null and OLD.FIELD_1 is not null or NEW.FIELD_1 <> OLD.FIELD_1)
DECLARE
VAR_FIELD_1 VT_LOG_TABLE.FIELD_1%TYPE;
BEGIN
SELECT SQLDBA.SEQ_LOG_TABLE.NEXtval into VAR_FIELD_1
FROM dual;
INSERT INTO VT_LOG_TABLE
(FIELD_0,VAR_FIELD_1,FIELD_2,FIELD_3,FIELD_1, FIELD_4)
VALUES(:NEW.FIELD_0,VAR_FIELD_1, :NEW.FIELD_2, :NEW.FIELD_3, :NEW.FIELD_1,SYSDATE);
END TRIGGER_TESTE;
해당 조건을 만들 수있는 올바른 방법은 무엇을 얻을?
전체 트리거를 게시 할 수 있습니까? (넣거나 NEW.FIELD_1가 null OLD.FIELD_1가 NEW.FIELD_1 <> OLD.FIELD_1 널 없거나) WHEN – araknoid
생성하거나 EACH ROW FOR SQLDBA.VT_TABLE ON INSERT OR UPDATE 후에 트리거 SQLTEST.TRIGGER_TESTE 대체 DECLARE VAR_FIELD_1 VT_LOG_TABLE.FIELD_1 % TYPE; BEGIN SELECT SQLDBA.SEQ_LOG_TABLE.NEXtval into VAR_FIELD_1 FROM dual; INSERT INTO VT_LOG_TABLE (FIELD_0, VAR_FIELD_1, FIELD_2, FIELD_3, FIELD_1, FIELD_4) VALUES (: NEW.FIELD_0, VAR_FIELD_1 : NEW.FIELD_2 : NEW.FIELD_3 : NEW.FIELD_1, SYSDATE); END TRIGGER_TESTE; – Igor
삽입 할 때 OLD를 비교할 수 없기 때문에 오류가 'NEW.FIELD_1 <> OLD.FIELD_1'일 수 있습니다. 그러나 이것에 대해서는 100 % 확신 할 수 없습니다. – araknoid