|
|
|
Архивирование связанных таблиц в многопользовательском режиме
|
|||
|---|---|---|---|
|
#18+
Задача: Задача:Создать архивные таблицы такой же структуры, что таблица задач («задача») и таблица, связующая задачи и сотрудников («задача-сотрудник»). Написать функцию, перемещающую записи из основных таблиц («задача» и «задача-сотрудник») в соответствующие архивные таблицы и работающую в многопользовательском режиме. В качестве параметра функция получает дату, которая указывает, что задачи, завершенные до этой даты должны быть перенесены в архив. Функция возвращает 0, если в архивные таблицы была перенесена хотя бы 1 задача; функция возвращает 1, если не было перенесено ни одной задачи и возвращает 2, если при выполнении возникла ошибка. Решение: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: 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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 18:59 |
|
||
|
Архивирование связанных таблиц в многопользовательском режиме
|
|||
|---|---|---|---|
|
#18+
1. Параллельная сессия фиксирует запись в workflow между delete from workflow и delete from tasks 2. row-by-row = slow-by-slow (c) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 19:12 |
|
||
|
Архивирование связанных таблиц в многопользовательском режиме
|
|||
|---|---|---|---|
|
#18+
tester99, а вопрос-то в чем? мы же не знаем, кто и как будет тебя проверять... может ему "и так сойдет"(с) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 19:20 |
|
||
|
Архивирование связанных таблиц в многопользовательском режиме
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Я так понимаю, что многопользовательский режим только через эту процедуру. Т.е. вторая сессия не получит блокировку еще на таблицу tasks и до delete не дойдет. Вопрос в том, правильно ли так реализовывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 19:57 |
|
||
|
Архивирование связанных таблиц в многопользовательском режиме
|
|||
|---|---|---|---|
|
#18+
tester99Вопрос в том, правильно ли так реализовывать? И так, в принципе, сойдёт, но надо обязательно озаботиться TIL круче, чем обычный read committed. Хотя, возможно, подразумевается, что его надо эмулировать хитвовывернутыми bulk collect. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 22:04 |
|
||
|
Архивирование связанных таблиц в многопользовательском режиме
|
|||
|---|---|---|---|
|
#18+
tester99Я так понимаю, что многопользовательский режим только через эту процедуру. Это вряд ли. Процедура архивирования не может быть единственным процессом, использующим данные. Правильно организовать - по учебнику. Изучите главу data concurency and consistency концептов. Прочитайте application development guide. Рассматривайте различные варианты конкурирующей нагрузки - от простых select до dml и, если хватит силенок, ddl. Начните с блокировки заданий, с которыми предполагается работать в процедуре. Есть несколько "букварных" способов, исследуйте их (блокировка всей таблицы, блокировка требуемой строки двумя способами, кастомная блокировка). Выберите наиболее подходящий к задаче вариант. Рассмотрите варианты наличия/отсутствия FK, наличия/отсутствия индекса на FK, различные варианты "on delete". Изучите отложенную (deferrable ... deferred) проверку ограничений целостности и примените к задаче. Изучите вариант переноса данных посредством dml returning value. Научитесь корректно обрабатывать исключительные ситуации. В итоге получите 5-10 вариантов решения задачи и неплохой начальный скилл в области разработки вообще и Oracle-разработки в частности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 16:39 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=129&tid=1884584]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 303ms |

| 0 / 0 |
