Я хочу написать скрипт на SQL, который будет копировать эти 2 таблицы (A, B) в другие 2 таблицы (C, D) с той же структурой, что и A, B соответственно.
ВАЖНО:
- Таблицы C, D NOT необходимо пустое
- Несколько процессов могут одновременно вызывать скрипт
Таблица Aимеет внешний ключ (fk_a_b) таблицы B
________________________ _________________
| Table A | | Table B |
|______________________| |_______________|
| id FK_A_B name | | id visible |
| ----- -------- ------| | ----- --------|
| 1 21 n1 | | 21 true |
| 5 32 n2 | | 32 false |
------------------------ -----------------
Допустим, что после копирования таблицы B в D это то, что я получаю
________________
| Table D |
|______________|
| id visible |
| ----- -------|
| 51 true |
| 52 false |
----------------
Теперь, когда я скопирую таблицу ACI нужно как-то знать, что ID = 21 теперь отображается на ID = 51, а ID = 32 на ID = 52.Наконец, таблица C будет иметь вид:
________________________
| Table C |
|______________________|
| id FK_C_D name |
| ----- -------- ------|
| 61 51 n1 |
| 62 52 n2 |
------------------------
Поскольку несколько процессов могут вызывать скрипт одновременно, я НЕ МОГУ изменить таблицу A, B, чтобы добавить несколько вспомогательных столбцов.Итак, для достижения этого я использовал CURSOR.Я скопировал строку за строкой таблицы B и управляемую временную таблицу для сопоставления OldId с NewId (21-> 51,32-> 52), а затем использовал эту временную таблицу для копирования таблицы A.
Я читал, чтоКУРСОР это плохая практика.Итак, есть ли другой способ сделать это?
Спасибо