【问题标题】:Change Data Capture in oracle 11goracle 11g 中的变更数据捕获
【发布时间】:2018-03-08 20:36:45
【问题描述】:

我正在处理 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 列。如何做到这一点?

【问题讨论】:

    标签: oracle11g


    【解决方案1】:

    一个可能满足您的需要且不需要动态 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
    

    【讨论】:

      猜你喜欢
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      相关资源
      最近更新 更多