|
|
|
trigger before select
|
|||
|---|---|---|---|
|
#18+
Доброго времени дни. Предыстория: появилась необходимость создать view при обращении к которой будет происходить обновление агрегирующей таблицы, из которой и происходит выборка. Поскольку в oracle (11g2) нет триггеров на before select постарался решить задачу следующем образом: 1. Есть агрегирующая таблица, например такая: Код: plsql 1. 2. 3. 4. С данными: Код: sql 1. 2. 2. Есть функция, которая наполняет данную таблицу данными: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 3. Есть представление, при обращении к которому вызывается функция и выборка из агрегирующей таблицы: Код: sql 1. 2. 3. 4. 5. 6. Но теперь самое интересное: 1. Выборка из таблицы возвращает следующие данные: Код: sql 1. 2. 3. 2. Запрос к представлению, возвращает те же данные и строку, содержащую результат выполнения функции: Код: sql 1. 2. 3. 4. Но таблица уже содержит ещё одну строку с данными, добавленную при выполнении функции: Код: sql 1. 2. 3. 4. Вопрос: Возможно ли реализовать представление так, чтобы выборка из агрегирующей таблицы при запросе к представлению уже содержала данные, добавленные при при вызове функции, так же вызванной при запросе к представлению? Т.е. что бы при данных в агрегирующей таблице: Код: sql 1. 2. 3. Результат обращения к представлению был: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2017, 13:41 |
|
||
|
trigger before select
|
|||
|---|---|---|---|
|
#18+
Жесть. Посмотрите лучше на конвейерные функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2017, 13:47 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1885249]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
152ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 433ms |

| 0 / 0 |
