【问题标题】:Creating a composite primary key while one of the column may or may not be null在其中一列可能为空或不为空时创建复合主键
【发布时间】:2015-05-04 10:08:37
【问题描述】:

谁能告诉我,当列值之一可能为空时,如何通过组合两列来创建唯一键?

假设有 2 个 col:-col1 和 col2。我必须在这两列上定义一个复合键,我如何处理这些列中的任何一个出现的空值?

有没有办法为任何空列随机生成一个值,而不是在 informatica 中创建一个唯一键?

【问题讨论】:

  • 如何将另一列设为计算列?或者让第三列作为前两列的计算并在第三列上创建唯一键(如果您无法修改 col2 定义)。

标签: oracle10g informatica-powercenter


【解决方案1】:

将持久序列附加到复合键 (col1+col2+seq_no)。对于每次运行增量该键并存储它的最大值,然后在它的后续运行中使用 max+1。对于增量序列,您可以使用序列生成器,也可以使用表达式变量计算值。

【讨论】:

    【解决方案2】:

    您可以使用 DECODE 来处理 COL1 和 COL2 中的 NULL 值。

    使用序列生成器填充 SEQ_VALUE 端口中的值 从 1001 开始,递增 1,

    KEY_COL1 = DECODE(COL1,NULL,0,COL1)
    --assigning to a variable port KEY_COL1
    
    KEY_COL2 = DEOCDE(COL2,NULL,0,col2)
    --assigning to a variable port KEY_COL2
    

    然后生成复合键

    COMPOSITE_KEY = (SEQ_VALUE || KEY_COL1  || KEY_COL2 )
    

    它是如何工作的:

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多