|
|
|
SCD type2 again
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть таблички, неисторичные, с размерностью не более 200к строк. Хочется переливать таблички так, чтобы обеспечить историчность, например раз в день. таблица table1 - это id, code, name и допустим checksum по всем отслеживаемым полям(может быть и сравнение всех столбцов, в данном топике не принципиально) таблица table 2 - то же самое, плюс date_begin, date_end, is_actual, is_deleted Какие действия необходимо совершить: 1) Вставить новые записи 2) Обновить существующие, если поменялись значимые столбцы a) поставить date_end = sysdate у текущей записи b) вставить измененную запись как новую 3) Пометить запись в table1 как удаленную, если в table2 эта запись не пришла. Я нашел, что в mssql это делается примерно так: Код: sql 1. 2. 3. Для оракла нашел несколько вариантов, но они выполняют 2 шага из 3 в различных комбинациях. Написал свой вариант, но, возможно, я что-то упустил, и потом правда вылезет слишком поздно. К тому же прошлый опыт подсказывает, что либо плохо искал, либо есть нюансы, из-за чего так делать нельзя/не надо/не производительно. Прошу оставить свое мнение или ссылки на правильный вариант Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2016, 09:50 |
|
||
|
|

start [/forum/topic.php?fid=52&gotonew=1&tid=1886812]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
178ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 201ms |
| total: | 491ms |

| 0 / 0 |
