|
инвалидация views при удалении уникального индекса
|
|||
---|---|---|---|
#18+
Кто подскажет, почему при удалении уникального индекса инвалидируются зависимые от таблицы views? При чем только views, всё остальное - пакеты, функции, триггеры остаются валидными. Особенно доставляет, что в цепочке table => editioning view => view при удалении уникального индекса в таблице, editioning view не инвалидируется, а основанная на ней view - становится INVALID. Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 13:32 |
|
инвалидация views при удалении уникального индекса
|
|||
---|---|---|---|
#18+
Это сделано для корректной поддержки т.н. обновляемых представлений и словаря, например *_updatable_columns, которые от отсутствия уникального индекса могут перестать быть обновляемыми. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 15:39 |
|
инвалидация views при удалении уникального индекса
|
|||
---|---|---|---|
#18+
Разве они обновляются по любому уникальному индексу, а не только по первичному ключу или даже rowid? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 15:46 |
|
инвалидация views при удалении уникального индекса
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Разве они обновляются по любому уникальному индексу, а не только по первичному ключу или даже rowid? ROWID для этого совсем не годится. А про то, к чему относится упомянутый индекс ТС не уточнил. Любой уникальный индекс не годится, поскольку он не требует наличия NOT NULL для всех входящих в него столбцов. Первичный ключ - это то, что надо. Плюс содержание самого view, которое тоже определяет какие столбцы можно обновлять. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 15:52 |
|
инвалидация views при удалении уникального индекса
|
|||
---|---|---|---|
#18+
Alexander Anokhin Это сделано для корректной поддержки т.н. обновляемых представлений и словаря, например *_updatable_columns, которые от отсутствия уникального индекса могут перестать быть обновляемыми. View может быть updatable и без индексов. Вдобавок в моем примере индекс построен на столбцах nullable и в принципе не может служить однозначным определением всех строк в таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 16:07 |
|
инвалидация views при удалении уникального индекса
|
|||
---|---|---|---|
#18+
Alexander Anokhin, вьюшка очень простая, там нет джоинов, у такого вью updatable_columns не должен зависеть от наличия/отсутсвия индекса ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 16:09 |
|
инвалидация views при удалении уникального индекса
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Разве они обновляются по любому уникальному индексу, а не только по первичному ключу или даже rowid? Уникальность гарантирует key-preserved. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Код: plaintext 1. 2. 3. 4.
Код: plsql 1. 2.
Код: plaintext 1.
Код: plsql 1. 2.
Код: plaintext 1.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: plaintext 1. 2. 3. 4.
Код: plsql 1. 2.
Код: plaintext 1.
Начиная с 19.10, Оракл пытается делать update view даже без key-reserved. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 16:18 |
|
инвалидация views при удалении уникального индекса
|
|||
---|---|---|---|
#18+
AlexFF__| Alexander Anokhin Это сделано для корректной поддержки т.н. обновляемых представлений и словаря, например *_updatable_columns, которые от отсутствия уникального индекса могут перестать быть обновляемыми. View может быть updatable и без индексов. Вдобавок в моем примере индекс построен на столбцах nullable и в принципе не может служить однозначным определением всех строк в таблице. Не важно какая она может быть без индексов. Важно, что с удалением уникального индекса представление может потерять важные свойства с изменением словаря, и должно быть перекомпилировано, чтобы всё это правильно поправить. Очевидно, что это не дожно происходить во время удаления индекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 16:20 |
|
инвалидация views при удалении уникального индекса
|
|||
---|---|---|---|
#18+
Alexander Anokhin Начиная с 19.10, Оракл пытается делать update view даже без key-reserved. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Код: 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.
Выделенное не должно было пройти. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 16:52 |
|
инвалидация views при удалении уникального индекса
|
|||
---|---|---|---|
#18+
Alexander Anokhin, А вот обратная ситуация проходит корректно. Если мы создаем уникальный индекс после view, oracle не инвалидирует view, а проверяет updatable во время самого update. При этом представление user_updatable_columns также не обновляется, столбцы реально updatable, а там все еще NO . И я не вижу, что мешает сделать такое же поведение при удалении индексов. Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 16:53 |
|
|
start [/forum/topic.php?fid=52&msg=40106736&tid=1879793]: |
0ms |
get settings: |
25ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
228ms |
get tp. blocked users: |
1ms |
others: | 376ms |
total: | 709ms |
0 / 0 |