-1

我需要在查询级别设计这个是否可以对表中的版本、已删除、标志列进行。

src_emp----> 源表

empno,ename,sal
1    ,aaa  ,1000
2    ,bbb  ,2000
3    ,ccc  ,3000

首先加载目标表 trg_emp 输出如下所示

empkey,empno,ename,sal  ,version,flag,deleted
1     ,1    ,aaa  ,1000 ,1      ,Y   ,N
2     ,2    ,bbb  ,2000 ,1      ,Y   ,N
3     ,3    ,ccc  ,3000 ,1      ,Y   ,N

现在这样做之后,我会将empno = 3的工资更改为sal = 4000然后更新我的目标表后看起来像

empkey,empno,ename,sal  ,version,flag,deleted
1     ,1    ,aaa  ,1000 ,1      ,Y   ,N
2     ,2    ,bbb  ,2000 ,1      ,Y   ,N
3     ,3    ,ccc  ,3000 ,1      ,N   ,N
4     ,3    ,ccc  ,4000 ,2      ,Y   ,N

上面您可以观察到 empno=3 的版本增加到 2,最后一行的标志已更改为“Y”,前一行为“N”,用于 empno=3在源中删除,则该标志必须变为“Y”假设如果我在源表中删除 empno=2,那么我的最终目标表应如下所示

empkey,empno,ename,sal,version,flag,deleted
1,1,aaa,1000,1,Y,N
2,2,bbb,2000,1,Y,Y
3,3,ccc,3000,1,N,N
4,3,ccc,4000,2,Y,N

在目标表中,第二行标志必须将已删除标志值更新为“Y”。

4

1 回答 1

1

如果我理解您的问题,您可以通过使用 postgresql 的 TRIGGERS 来强制执行这种行为。您必须在引用触发器函数的表中创建触发器。

有关在此处创建触发器的更多信息: http ://www.postgresql.org/docs/current/static/sql-createtrigger.html

以及有关在此处创建触发器功能的信息: http ://www.postgresql.org/docs/current/static/plpgsql-trigger.html

于 2013-06-11T17:21:09.053 回答