我需要在查询级别设计这个,这可以用于表格中的版本,删除,标记列。
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
上面你可以观察到版本增加到2为empno = 3并且标志已经变为最后一行为“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”。
答案 0 :(得分:1)
如果我理解你的问题,你可以使用postgresql使用TRIGGERS强制这种行为。 您必须在引用触发器功能的表中创建一个触发器。
有关创建触发器的更多信息: http://www.postgresql.org/docs/current/static/sql-createtrigger.html
以及有关创建触发器函数的信息: http://www.postgresql.org/docs/current/static/plpgsql-trigger.html