|
Синхронизация содержимого двух таблиц в одной БД
|
|||
---|---|---|---|
#18+
Здравствуйте! Помогите, пожалуйста, написать функцию, которая добавляет или удаляет строки в таблице t2 после сравнения с таблицей t1. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
После применения функции синхронизации t2 должна будет выглядеть так: Код: plaintext 1. 2. 3. 4. 5. 6.
Пробовала следующие варианты: 1. Тема с использованием триггерной функции https://www.sql.ru/forum/1096084/sinhronizaciya-tablic-iz-raznyh-bd не пойдет, так как таблица t1 всегда будет обновляться целиком: старое содержимое t1 будет стираться, а новые данные будут копироваться заново целиком. 2. Пробовала сделать по этой теме https://www.sql.ru/forum/1323681/replikaciya-v-tablicu-s-dannymi?hl=%f1%e8%ed%f5%f0%ee%ed%e8%e7%e0%f6%e8%ff%20%f2%e0%e1%eb%e8%f6 но нет возможности поменять wal_level на Logical - не могу перегружать сервер. Может быть, есть способ все сделать обычной функцией? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2022, 13:33 |
|
Синхронизация содержимого двух таблиц в одной БД
|
|||
---|---|---|---|
#18+
Oda412, delete from t2 where f1 not in (select f1 from t1); insert into t2 ... (select .. from t1 minus select .. from t2) on conflict ... do update ... тут вариантов исполнения много, на любой вкус... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2022, 14:08 |
|
Синхронизация содержимого двух таблиц в одной БД
|
|||
---|---|---|---|
#18+
Misha111, Спасибо огромное, Вы мне очень помогли! На всякий случай, если кому пригодится: в PostgreSQL вместо MINUS работает EXCEPT ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2022, 14:52 |
|
|
start [/forum/topic.php?fid=53&msg=40133192&tid=1993664]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 145ms |
0 / 0 |