首页 > 解决方案 > 确定行是否已更新

问题描述

可能是一个很长的镜头,但我正在寻找一种方法来查看自插入以来是否已更新行。

前任。

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';

有什么方法可以告诉我“C”记录已经更新了吗?

此外,我完全无法控制数据模型,因此我无法将添加时间戳和更新时间戳添加到实际表中。

标签: sqloracleoracle11g

解决方案


这将起作用:

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

谢谢你!!!!!!


推荐阅读