У меня есть таблица с именем Customers. Когда я удаляю или обновляю любое значение в таблице, я хотел бы записать это в новую таблицу, которую я создаю с кодом ниже. Проблема в том, что я не могу получить старые значения (значения, которые существовали до удаления), чтобы вставить их в таблицу журнала изменений. Код работает, только если я комментирую старую часть значений. Что я делаю неправильно?
Оператор DDL для создания таблицы журнала:
CREATE TABLE customersHistory(
tablename VARCHAR2(30),
transactionType VARCHAR2(30),
username VARCHAR2(30),
transactionDate DATE,
savedName VARCHAR2(50),
savedSurname VARCHAR2(50));
и блок кода для создания соответствующего триггера базы данных:
CREATE OR REPLACE TRIGGER custModify
AFTER DELETE OR UPDATE ON Customers
FOR EACH ROW
DECLARE
tableName customersHistory.Tablename%type := 'Customers';
typeOfChange customersHistory.Transactiontype%type;
person customersHistory.Username%type := USER;
dateOfRecord customersHistory.Transactiondate%type;
cname customersHistory.Savedname%type;
csurname customersHistory.Savedsurname%type;
BEGIN
IF DELETING THEN
typeOfChange :='Silme';
dateOfRecord := SYSDATE;
cname := OLD.c_name;
csurname := OLD.c_surname;
ELSIF UPDATING THEN
typeOfChange :='Güncelleme';
dateOfRecord := SYSDATE;
cname := OLD.c_name;
csurname:= OLD.c_surname;
END IF;
INSERT INTO customersHistory
VALUES(tableName, typeOfChange, person, dateOfRecord, cname, csurname);
END;
ошибка:
Trigger CUSTMODIFY compiled
LINE/COL ERROR
--------- -------------------------------------------------------------
13/9 PL/SQL: Statement ignored
13/18 PLS-00201: identifier 'OLD.C_NAME' must be declared
14/9 PL/SQL: Statement ignored
14/21 PLS-00201: identifier 'OLD.C_SURNAME' must be declared
18/9 PL/SQL: Statement ignored
18/18 PLS-00201: identifier 'OLD.C_NAME' must be declared
19/9 PL/SQL: Statement ignored
19/20 PLS-00201: identifier 'OLD.C_SURNAME' must be declared
Errors: check compiler log