Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Триггер на представление  [new]
Rezident_
Member

Откуда:
Сообщений: 25
Добрый день!
Есть такая задача: есть главная таблица, в которую заносятся данные. На эту таблицу есть два триггера, которые фиксируют изменения (insert, update) и записывают логи соответственно в таблицы Table1 и Table2. Первый триггер записывает в Table1 данные которые изменились, а второй в Table2 - кто изменил (или добавил). Соответственно есть view на основе этих двух таблиц, где лежит "Кто и что добавил (изменил)".
Вопрос такой: возможно ли сделать триггер на view, который сработает при добавлении (изменении) данных в главной таблице конкретным пользователем.
Например, пользователь "Иванов" добавил новую запись в главную таблицу, в другие две - записались логи и сработал триггер, который нужен или это нереально?
29 сен 16, 15:34    [19724242]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на представление  [new]
Не понял фишки
Guest
Rezident_, встречный вопрос - почему триггер именно на представлении и что он будет делать?
29 сен 16, 15:39    [19724280]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на представление  [new]
Rezident_
Member

Откуда:
Сообщений: 25
Триггер будет вставлять еще один признак в еще одну таблицу. Потому что условие срабатывания триггера - конкретный пользователь добавил (изменил) определенные данные (а не любые).
29 сен 16, 15:47    [19724344]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на представление  [new]
Тоже не понял
Guest
Rezident_,

Как вы определяете "конкретный пользователь"? И почему это нельзя сделать в одном из двух первых триггеров?
Которые, кстати, по-хорошему, имхо, нужно объединить в один.
29 сен 16, 15:52    [19724379]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на представление  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18371
Пару релизов назад просто посоветовали бы streams...
29 сен 16, 15:54    [19724401]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на представление  [new]
Rezident_
Member

Откуда:
Сообщений: 25
В Table2 записывается логин пользователя. Такая структура у БД - в одну пишется что изменили, а в другую- кто, изменять ее не представляется возможным, к сожалению.
29 сен 16, 15:55    [19724411]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на представление  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51796

Rezident_
Триггер будет вставлять еще один признак в еще одну таблицу. Потому что условие
срабатывания триггера - конкретный пользователь добавил (изменил) определенные данные (а
не любые).

А в чём проблема-то? Вешаешь триггер на вьюху, первые два триггера переделываешь так,
чтобы писали данные не в таблицы, а в эту самую вьюху. И всё, телемаркет.

Posted via ActualForum NNTP Server 1.5

29 сен 16, 15:59    [19724425]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на представление  [new]
Rezident_
Member

Откуда:
Сообщений: 25
Dimitry Sibiryakov, нельзя переделать структуру тех триггеров, в том и проблема, так бы да можно было.
29 сен 16, 16:03    [19724453]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на представление  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18371
Dimitry Sibiryakov
триггера переделываешь так,
чтобы писали данные не в таблицы, а в эту самую вьюху. И всё, телемаркет.

Сэр не из Челябинска часом будет?
...а то суровость как-то зашкаливает.
29 сен 16, 16:06    [19724468]     Ответить | Цитировать Сообщить модератору
 Re: Триггер на представление  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18371
Rezident_
Dimitry Sibiryakov, нельзя переделать структуру тех триггеров, в том и проблема, так бы да можно было.

ТС, если Вам ничего нельзя - то надо отказываться от задачи в пользу более опытных/доверенных коллег.
А если все-таки что-то можно - то можно, как минимум:
- повесить третий триггер на базовую таблицу
- повесить триггер на одну из таблиц логов.
- сделать еще одну view над таблицами логов, в которой будет фильтроваться необходимые данные, или даже над имеющейся view.
- создать snapshot logs на базовой таблице и слепить materialized view "refresh on commit"
- писать события в non-persistent очередь триггером на базовой, логи вести callback-ом
...
29 сен 16, 16:12    [19724507]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить