Oracle10g 在其中一列可能为空或不为空时创建复合主键

Oracle10g 在其中一列可能为空或不为空时创建复合主键,oracle10g,informatica-powercenter,Oracle10g,Informatica Powercenter,有谁能告诉我,当其中一个列值可能为空时,如何通过组合两个列来创建唯一键 假设有两个col:-col1和col2。我必须在这两列上定义一个复合键,如何处理这些列中的空值 除了在informatica中创建一个唯一的键之外,是否有任何方法可以随机为任何空列生成一个值?将一个持久化序列附加到复合键(col1+col2+seq_no)。对于该键的每次运行增量,并将其存储为max,然后在后续运行中使用max+1。对于增量序列,您可以使用序列生成器或使用表达式变量计算值。您可以使用解码来处理COL1和COL

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

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


除了在informatica中创建一个唯一的键之外,是否有任何方法可以随机为任何空列生成一个值?

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

您可以使用解码来处理COL1和COL2中的空值

使用序列生成器填充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 )
工作原理:


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