У меня есть представление, которое динамически возвращает значения из разных таблиц. Мне нужно было вставлять или удалять в какую-либо таблицу из этого представления всякий раз, когда представление добавляет или уменьшает данные. Должен ли я использовать хранимую процедуру или что-то в этом роде
Вставка в таблицу из Oracle View
comment
Этот вопрос не имеет абсолютно никакого отношения к Delphi, поэтому я удаляю теги. Это строго вопрос Oracle SQL.
- person Ken White   schedule 28.01.2016
comment
Что вы имеете в виду, когда представление добавляет или уменьшает данные? Не могли бы вы предоставить какой-нибудь вариант использования, как вы его используете?
- person Petr Pribyl   schedule 28.01.2016
comment
Похоже, вам нужно материализованное представление.
- person Sameer Mirji   schedule 28.01.2016
comment
Представление — это просто готовый запрос к таблицам, оно физически не хранит данные. Вам нужно либо использовать материализованное представление, либо использовать решение триггеров для базовых таблиц, которые представление запрашивает для идентификации при изменении содержимого представления.
- person Michael Broughton   schedule 28.01.2016
comment
это может помочь stackoverflow.com/questions/1652995/
- person Sandeep   schedule 28.01.2016
comment
Да, материализованное представление может решить эту проблему. Спасибо всем
- person shishir ghimire   schedule 01.02.2016
Ответы (1)
Как уже заявил @MichaelBroughton, представление физически не хранит данные, и представление не имеет «знаний» о том, когда изменяются его базовые данные.
Я предлагаю вам подумать о создании триггеров для базовых таблиц и позволить этим триггерам обрабатывать обновления целевой таблицы. Если применимо в вашем контексте, вы, конечно, можете иметь несколько триггеров, выполняющих одну и ту же хранимую процедуру, в которой выполняется распространение данных.
Матриализованное представление также может быть решением, поскольку вы можете просто создать триггер для этого представления, но за счет фактического хранения всех данных, которые предоставляет ваше представление.
person
Michael Schaefers
schedule
29.01.2016