我有一个维度表是这样的:PK约束UPDATE
MY_TABLE
pk1 Primary key
pk2 Primary key
pk3 Primary key
col1
col2
col3
...
和使用程序,以填补该表与合并到声明:
MERGE INTO my_Table dest
USING
(SELECT <columns>
FROM <tables>
WHERE <conditions>) src
ON
(dest.pk1 = src.pk1 AND dest.pk2 = src.pk2 AND pk3 = src.pk3)
WHEN MATCHED THEN UPDATE SET dest.col1 = src.col1 ,
dest.col2 = src.col2 ,
dest.col3 = src.col3
WHEN NOT MATCHED THEN INSERT (pk1, pk2, pk3, col1, col2, col3)
VALUES (src.pk1, src.pk2, src.pk3, src.col1, src.col2, src.col3);
我的问题是,查询'src“返回一些行有相同的主键,但他们没有重复的行,例如
| pk1 | pk2 | pk3 | col1 | col2 | col3 |
--------------------------------------------------
| 100 | abc | x99 | 6000,00 | 01/01/2010 | 50,00 |
| 100 | abc | x99 | 0,00 | 01/01/2010 | 30,00 |
| 110 | rty | b50 | 345,00 | 08/10/2009 | 10,00 |
| 120 | xyz | y91 | 1200,00 | 13/02/2009 | 12,50 |
| 120 | xyz | y91 | 1200,00 | 13/02/2009 | 0,00 |
| 120 | xyz | y91 | 1200,00 | 13/02/2009 | 0,00 |
| 120 | xyz | y91 | 1200,00 | 13/02/2009 | 0,00 |
所以,当我把我的程序返回的唯一约束违反错误。
什么可能是这个问题的解决办法?顺便说一下即时查询src
的不是作家......
,如果我需要修改src
我应该有一个PK (100,ABC,X99):
| pk1 | pk2 | pk3 | col1 | col2 | col3 |
--------------------------------------------------
| 100 | abc | x99 | 6000,00 | 01/01/2010 | 80,00 |
,为PK (120,XYZ,Y91)我将不得不:事先的任何建议
| pk1 | pk2 | pk3 | col1 | col2 | col3 |
--------------------------------------------------
| 120 | xyz | y91 | 1200,00 | 13/02/2009 | 12,50 |
感谢。
你想为pk 100,qbc,x99插入什么 - 考虑到我们可以尝试理清你如何得到那 – Mark 2010-08-27 11:39:20
我编辑了我的问题,谢谢 – mcha 2010-08-27 12:10:22