代码之家  ›  专栏  ›  技术社区  ›  Error_2646

确定行是否已更新

  •  3
  • Error_2646  · 技术社区  · 6 年前

    这可能不太可能,但我正在寻找一种方法来查看一行在插入后是否进行过更新。

    前任。

    CREATE TABLE TEST_DATA AS
      ( SELECT 'A' AS dummy
          FROM dual
         UNION
        SELECT 'B' AS dummy
          FROM dual
      );
    
    UPDATE TEST_DATA 
       SET dummy = 'C'
     WHERE dummy = 'B';
    

    此外,我完全无法控制数据模型,因此无法向实际表中添加add时间戳和update时间戳。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Nikhil S    6 年前

    这将有助于:

    create table test_data(a varchar(1));
    insert into test_data values('A');
    insert into test_data values('B');
    insert into test_data values('C');
    insert into test_data values('D');
    select * from test_data;
    
     A
     B
     C
     D
    create table noofchanges(data varchar(1),numberofchanges int) ;
    insert into noofchanges(data,numberofchanges) select a,0 from test_data;
    select * from noofchanges;
    
    A   0
    B   0
    C   0
    D   0
    
    
    CREATE OR REPLACE TRIGGER test_data_before_update
    BEFORE UPDATE
       ON test_data
       FOR EACH ROW
    BEGIN
        update noofchanges 
        set numberofchanges=numberofchanges+1 
        where data=:old.a;    
    END;
    
    
    update test_data set a='A' where a='B';
    select * from test_data;
    
    
     A 
     A
     C
     D
    
    select * from noofchanges
    A   0
    B   1
    C   0
    D   0