创建复合主键时,其中一列可能为空,也可能不为空

时间:2015-05-04 10:08:37

标签: oracle10g informatica-powercenter

任何人都可以告诉我,当其中一个列值为空时,如何通过组合两列来创建唯一键?

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以使用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 )

工作原理:

enter image description here