Рассмотрим таблицы ниже
Create table t1 (n1 number identity, v1 varchar);
Create table t2 (n1 number identity, v1 varchar);
N1 в обеих таблицах являются столбцами идентификаторов
Значения таблицы t1 такие, как показано ниже
| N1 | V1 |
|--------|---------|
| 1 | A |
| 2 | B |
| 3 | C |
-------------------
Теперь, когда я вставляюТабличные значения T1 в T2, мне нужно собрать отображение между T1.N1 и T2.N1
Отображение старого значения N1 и нового значения N1.
Скажите, если в значениях T2 идентичностисоздаются, как показано ниже, мне нужно знать, каково новое значение T2.N1, соответствующее старому значению T1.N1.
| N1 | V1 |
|--------|---------|
| 6 | A |
| 7 | B |
| 8 | C |
-------------------
Old N1 = 1, New N1 = 6
Old N1 = 2, New N1 = 7
Old N1 = 3, New N1 = 8
Каков наилучший способ добиться этого в Oracle и сервере MS SQL?Программно или по запросу?Не внося никаких изменений в таблицу.
Я попробовал описанный ниже метод, но это невозможно
Oracle
Create type mapping_object is object (n1 number, n2 number);
Create type mapping_tab is table of mapping_object;
Insert into T2 (v1)
select v1 from T1
returning T2.n1, T1.n1 bulk collect into mapping_tab;
SQL-сервер
Declare @mapping_tab is table (n1 int, n2 int)
Insert into T2 (v1)
Output inserted.n1, T1.n1 into @mapping_tab
Select v1 from T1