如何在ORACLE触发器中获取其他列值

时间:2017-11-23 18:36:24

标签: oracle triggers

我在特定表上有一个删除触发器,如下所示。执行触发器时,似乎只提供使用old.columnName修改的列的值。如何获取其他列的值以便我可以在另一个表中插入所有需要的列值?

以下是触发器:

create or replace TRIGGER AUDIT_TRIGGER 
  AFTER DELETE ON TABLE_T2
  FOR EACH ROW

DECLARE 
    FILE_HANDLER UTL_FILE.FILE_TYPE;

BEGIN
    FILE_HANDLER := UTL_FILE.FOPEN('Test_Dir','trigger_log_file_delete.txt','w');
    UTL_FILE.PUT(FILE_HANDLER, '----START LOG---- '||+CHR(10));
    UTL_FILE.PUT(FILE_HANDLER,to_char(sysdate,'YYYY/MM/DD:HH:MI:SSAM')||+CHR(10));
    UTL_FILE.PUT(FILE_HANDLER, ':OLD.OBJECT_ID = '||:OLD.OBJECT_ID||+CHR(10));
    UTL_FILE.PUT(FILE_HANDLER, ':OLD.PRIMARY_KEY = '||:OLD.PRIMARY_KEY||+CHR(10));
    UTL_FILE.PUT(FILE_HANDLER, '----END LOG---- '||+CHR(10));
    UTL_FILE.FCLOSE(FILE_HANDLER);
END;

以下是我要打印的文件的内容:

----START LOG---- 
2017/11/23:08:27:49PM
:OLD.OBJECT_ID = 
:OLD.PRIMARY_KEY = 46
----END LOG----

在输出中,虽然我得到了已删除行的OBJECT_ID,但我无法获得PRIMARY_KEY。我知道OBJECT_ID具有价值。请让我知道如何获取其他列的值。

enter image description here

0 个答案:

没有答案