Oracle数据库触发器选择上一行

时间:2014-07-17 11:38:19

标签: sql oracle triggers

我正在一个表上写一个AFTER INSERT Trigger,它从Excel文件中获取数据,该文件包含以下三列:

Tag_No ,Date ,Problem

问题是,在此Excel文件中,Tag_No与前一个文件相同时不会重复。该数据的一个例子如下:

   Tag_No ,Date           ,Problem
     1     17-JUL-14       ABCS
           18-JUL-14       asdf
     2     17-JUL-14       ABCS
           18-JUL-14       asdf
如果重复如上所述,

Tag_No将为空。我想为我要插入的每一行复制上面的Tag_No

1 个答案:

答案 0 :(得分:0)

我建议以不同的方式解决这个问题。向表中添加自动递增列。这将跟踪行放入表中的顺序。您可以通过定义序列然后在触发器中使用序列来完成此操作。

然后,在表位于数据库之后,您可以运行更新以执行所需操作:

update table t
    set tag = (select max(tag) keep (dense_rank first order by id desc)
               from table t2
               where t2.id < t.id and tag is not null
              )
    where tag is null;