2017-09-27 178 views
0

我正在研究oracle 11g中的更改数据捕获。我想在变化表例如只更新的列更改oracle 11g中的数据捕获

EMPNO ENAME JOB  MGR  HIREDATE  DEPTNO 

5 ford clerk 104 01-JAN-12 11 
5 ford clerk 104 01-JAN-12 18 

考虑上表中的变化表,这里只部门号已更新,所以我只需要deptno列在表中。这个怎么做?

回答

0

一个可能适合您的需求并且不需要动态SQL的选项是聚合员工记录,然后检查每个列中是否发生更改。

SELECT 
    EMPNO, 
    ENAME, 
    CASE WHEN COUNT(DISTINCT JOB) > 1 
     THEN 'yes' ELSE 'no' END AS job_changed, 
    CASE WHEN COUNT(DISTINCT MGR) > 1 
     THEN 'yes' ELSE 'no' END AS mgr_changed, 
    CASE WHEN COUNT(DISTINCT HIREDATE) > 1 
     THEN 'yes' ELSE 'no' END AS hire_date_changed, 
    CASE WHEN COUNT(DISTINCT DEPTNO) > 1 
     THEN 'yes' ELSE 'no' END AS dept_changed 
FROM yourTable 
GROUP BY 
    EMPNO, 
    ENAME