Наше требование если 1 из имени столбца в таблице обновления нам нужно вставить имя столбца в другой таблице, поэтому я написал этот коднужно имя столбца, старое значение и новое значение в Trigger
CREATE OR REPLACE TRIGGER Test AFTER
UPDATE ON XX_table
FOR EACH Row
BEGIN FOR C IN
(SELECT column_name
FROM User_Tab_Columns
WHERE Upper(Table_Name) = 'XX_table_name' ORDER BY column_id ASC)
LOOP
IF Updating (c.column_name)
THEN
INSERT INTO Xx_Trigger_table (Rt_Id ,Updated_Column ,updated_status) VALUES(:Old.Rt_Id,C.Column_Name,'Y');
END IF;
END LOOP;
END;
Теперь клиенту нужно старое значения, а также новое значение в XX_Trigger_Table.I наклоняет Написать
INSERT INTO Xx_Trigger_table (Rt_Id ,Updated_Column ,updated_status,old_value, new_value) VALUES(:Old.Rt_Id,C.Column_Name,'Y',:old.c.column_name,:new.c.column_name);
Пожалуйста, предложите мне некоторое представление о том, чтобы вставить новое и старое значение в таблице. Спасибо заранее.
Это странное требование. Зачем вам нужно ** имя столбца ** в таблице аудита? Все, что вы хотели бы, чтобы измененные строки были вставлены в таблицу аудита с колонкой ** 'timestamp' **. –
Ya Это странное требование клиента. Но нам нужно имя столбца для какой-либо другой цели транзакции. Было бы здорово, если бы вы могли мне помочь. – Girish
Затем сообщите клиенту, что это не хороший дизайн. Для аудита существует много новых методов. ** «Fine Grained Auditing» ** - одна из хороших особенностей. Кроме того, старый подход триггера должен быть реализован так, как я предложил. Вам нужна таблица аудита со всеми столбцами, подобными базовой таблице, с дополнительными столбцами, такими как столбец идентификатора как ПК, столбец идентификатора, чтобы узнать, является ли это ** «вставкой, обновлением или удалением» ** и ** 'timestamp' ** колонка. –