Talend-Oracle:选定一行的增量字段

Talend-Oracle: Increment field of selected one row

我有一个导入文件并登录到 Oracle 数据库的 talend 作业,日志 table 架构是这样的(没有 ID):

 filename | staus  | try_number
 -----------------------------
 f1       |imorted |    1 
 f2       |detected|    0
 f3       |detected|    3

最初,所有文件的状态为 "detected",因此它们尚未导入且导入尝试编号为 0,我想为每次导入尝试增加尝试编号,显而易见的解决方案是获取当前 "try_nmber" 通过 select 语句递增它并用新的更新 table,但查询将非常难看:

update mytable set
try_number = (select try_number from mytable where
              field1= value1 and
              field2= value2 and
              filed3= value3)
              +1
where         field1= value1 and
              field2= value2 and
              filed3= value3

我无法通过 Talend 或 Oracle 找到任何智能解决方案来增加 selected 行的字段而不检索当前值,有什么想法吗?

试试这个:

UPDATE   MYTABLE
   SET   TRY_NUMBER = NVL (TRY_NUMBER, 0) + 1
 WHERE   FIELD1 = VALUE1 AND FIELD2 = VALUE2 AND FILED3 = VALUE3;

NVL用于处理TRY_NUMBER为NULL的情况。

由于在 Oracle 中 NULL + 1 = NULL,我们必须在一个实体中转换 NULL,您可以用 1 求和返回 1。

NVL 在 TRY_NUMBER 为 NULL 的情况下将 TRY_NUMBER 转换为 0。