oracle - Oracle表审计添加日期和修改日期

标签 oracle ddl

根据要求,我需要为每个表支持两个必填列:ADDED_DATE、MODIFIED_DATE。
这些旨在用于 DBA/审计目的。

当我从应用程序内插入/更新记录时,是否可以使这些东西完全自动化,由数据库本身隐式支持?

最佳答案

在表上创建一个触发器(在更新每行之前)。

SQL> create table foo (hi varchar2(10), added_date date, modified_date date);

Table created.

SQL> create trigger foo_auifer
  2  before update or insert on foo
  3  for each row
  4  declare
  5  begin
  6    if (inserting) then
  7      :new.added_date := sysdate;
  8    elsif (updating) then
  9      :new.modified_date := sysdate;
 10    end if;
 11  end;
 12  /

Trigger created.

SQL> insert into foo (hi) values ('TEST');

1 row created.

SQL> insert into foo (hi) values ('TEST2');

1 row created.

SQL> update foo set hi = 'MODDED' where rownum  = 1;

1 row updated.

SQL> alter session set nls_date_format='dd-mon-yyyy hh24:mi:ss';

Session altered.

SQL> select * from foo;

HI         ADDED_DATE           MODIFIED_DATE
---------- -------------------- --------------------
MODDED     07-nov-2012 15:28:28 07-nov-2012 15:28:39
TEST2      07-nov-2012 15:28:30

SQL>

关于oracle - Oracle表审计添加日期和修改日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272711/

相关文章:

sql - 扩展日期范围以从具有排除日期的表中获取一系列日期范围之间的所有日期

postgresql - 从其他列值自动生成列值并用作 PRIMARY KEY

mysql - Postgre 或 mysql id 列自动递增

sql-server - SQL Server DDL 代码的版本控制

oracle - 如果连接丢失,从 SQL Server 到 Oracle 服务器的 OpenQuery 将无限期挂起

c# - OracleInternal.MTS.DTCPSPEManager 错误

java - 如何为 jdbc odbc 驱动程序设置获取大小

java - oracle.sql.ArrayDescriptor.createDescriptor 中的 ClassCastException

hadoop - 在 alter exchange 分区中期望 KW_EXCHANGE 接近 'table'

mysql - 这些 FK 定义是否等价?