gpt4 book ai didi

sql - 如何找出 Oracle DB 中的列何时更改?

转载 作者:行者123 更新时间:2023-12-04 20:49:01 25 4
gpt4 key购买 nike

我希望能够查看特定列的更改时间。
澄清一下,我不想看到 当一行被改变时。 我能够使用 ROWDEPENDENCIES 做到这一点,并使用时间戳触发。使用 ROWDEPENDICIES,我可以看到最后修改整行的时间,但我特别想知道特定列的更改时间。
为了澄清,我想要下表:

id   Name       Name_modified_on    Salary   Salary_modified_on
1 Johnson 11.03.16 10:54:27 5000 11.03.16 10:51:27
我怎么做?谢谢。
PS:我正在运行 Oracle 11g。

最佳答案

试试这个代码:

  • 创建一个表:
    CREATE TABLE TEST
    (
    ID VARCHAR2(2000 BYTE),
    NAME VARCHAR2(2000 BYTE),
    NAME_MODIFIED_ON DATE DEFAULT sysdate,
    SALARY NUMBER(10),
    SALARY_MODIFIED_ON DATE DEFAULT sysdate
    );
  • 创建数据库触发器:
    DECLARE
    /******************************************************************************
    NAME: COLUMN_UPDATE_TRG
    PURPOSE:

    REVISIONS:
    Ver Date Author Description
    --------- ---------- --------------- ------------------------------------
    1.0 4.8.2016 Tomaz Kristan 1. Created this trigger.

    NOTES:

    Automatically available Auto Replace Keywords:
    Object Name: COLUMN_UPDATE_TRG
    Sysdate: 4.8.2016
    Date and Time: 4.8.2016, 14:33:39, and 4.8.2016 14:33:39
    Username: (set in TOAD Options, Proc Templates)
    Table Name: Z_TEST (set in the "New PL/SQL Object" dialog)
    Trigger Options: (set in the "New PL/SQL Object" dialog)
    ******************************************************************************/
    BEGIN

    IF UPDATING THEN

    IF ( :new.name is not null AND :new.name != :old.name ) THEN
    :new.name_modified_on := sysdate;
    END IF;

    IF ( :new.salary is not null AND :new.salary != :old.salary ) THEN
    :new.salary_modified_on := sysdate;
    END IF;

    END IF;

    EXCEPTION
    WHEN OTHERS THEN
    -- Consider logging the error and then re-raise
    RAISE;
    END COLUMN_UPDATE_TRG;
  • 关于sql - 如何找出 Oracle DB 中的列何时更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35937070/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com