鉴于以下表格:
tableA: | tableB:
|
col1 col2 | col3 col4
----------- | ----------
1 4 | 1 x
2 5 | 2 x
3 6 | 1 z
| 2 z
| 3 z
我想在DB2中编写一个存储过程,在tableB中添加一些行,通过修改col3的值及其来自tableA
(1-4,2-5,3-6)的映射,所以这些添加了行:
通过查看col4 = x
所在的行,必须在tableB中添加这些行:
| 4 A1 -> (only 1 changed to its mapping value 4)
| 2 A1
| 1 B1
| 5 B1 -> (only 2 changed to its mapping value 5)
| 4 C1 -> (1 changed to its mapping value 4)
| 5 C1 -> (and 2 changed to its mapping value 5)
并查看col4 = z
所在的行,必须在tableB中添加这些行:
| 4 A2 -> (only 1 changed to its mapping value 4)
| 2 A2
| 3 A2
| 1 B2
| 5 B2 -> (only 2 changed to its mapping value 5)
| 3 B2
| 1 C2
| 2 C2
| 6 C2 -> (only 3 changed to its mapping value 6)
| 4 D2 -> (1 changed to its mapping value 4)
| 5 D2 -> (and 2 changed to its mapping value 5)
| 3 D2
| 4 E2 -> (1 changed to its mapping value 4)
| 2 E2
| 6 E2 -> (and 3 changed to its mapping value 6)
| 1 F2
| 5 F2 -> (2 changed to its mapping value 5)
| 6 F2 -> (and 3 changed to its mapping value 6)
| 4 G2 -> (1 changed to its mapping value 4)
| 5 G2 -> (and 2 changed to its mapping value 5)
| 6 G2 -> (and 3 changed to its mapping value 6)
请注意,在我的例子中,我有:
如果我在tableB中有4对1的映射(由4行表示),则必须添加15行。
如果我在表B中有5比1的映射(由5行表示),则必须添加31行
等等...
(不要将这些映射与tableA的映射混淆。不同)
答案 0 :(得分:0)
我很难理解。
我认为最好删除每个子集,然后插入当前映射。 (而不是试图弄清楚增量)
这似乎是不像这样反规范化的一个很好的理由。