Я пытаюсь вставить в таблицу запись, идентичную записи, которая была изменена в другой таблице, с помощью триггера.
Мне также нужно вставить, была ли операция вставкой, обновлением или удалением
CREATE OR REPLACE TRIGGER triggername
AFTER INSERT OR UPDATE OR DELETE
ON tablename
DECLARE
operation_type VARCHAR2;
changed_id VARCHAR2;
BEGIN
IF UPDATING
THEN operation_type := 'Update';
ELSE IF INSERTING
THEN operation_type := 'Insert';
ELSE IF DELETING
THEN operation_type := 'Delete';
END IF;
SELECT id
FROM tablename
WHERE :OLD.record1 != :NEW.record1
OR :OLD.record2 != :NEW.record2
OR :OLD.record3 != :NEW.record3
OR :OLD.record4 != :NEW.record4
OR :OLD.record5 != :NEW.record5
OR :OLD.record6 != :NEW.record6;
INTO changed_id;
INSERT INTO trigger_table.id VALUES(changed_id);
INSERT INTO trigger_table.type VALUES(operation_type);
END;
/
я получаю сообщение об ошибке
«ПЛОХОЕ ИМЯ ПРИВЯЗКИ: НОВОЕ» или «ПЛОХОЕ ИМЯ ПРИВЯЗКИ: СТАРОЕ» для каждого из: НОВОЕ или : СТАРОЕ
показано выше
:OLD
и:NEW
только в TRIGGER ROW LEVEL TRIGGER. Вы должны использоватьFOR EACH ROW
. - person Lalit Kumar B   schedule 13.05.2015