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

Откуда:
Сообщений: 274
Существует такая задача. Необходимо создать триггер который бы отрабатывался на добавление строки в любую таблицу пользователя. Есть ли такая возможность у триггеров?

Это необходимо для потому, что в проекте формируеться одна большая общая таблица, в которой в последствии будет осуществляться поиск.
21 сен 06, 08:37    [3165134]     Ответить | Цитировать Сообщить модератору
 Re: создание триггера на изменение в любой таблице определенного пользователя  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63932
Блог
Divan
Есть ли такая возможность у триггеров?

Нет. Можно воспользоваться механизмом пользовательских индексов.

Желание само по себе весьма сомнительное, и приведенное Вами "необходимо для потому" тоже.
21 сен 06, 08:42    [3165156]     Ответить | Цитировать Сообщить модератору
 Re: создание триггера на изменение в любой таблице определенного пользователя  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116068
Странно, а у Вас все таблицы имеют одинаковую структуру ?
Я бы подумал о добавлении триггеров во все таблицы схемы.
Можно подумать о скрипте генерации триггеров.

Divan
Это необходимо для потому, что в проекте формируеться одна большая общая таблица, в которой в последствии будет осуществляться поиск.


Если честно, очень подозрительно выглядит.
21 сен 06, 08:45    [3165170]     Ответить | Цитировать Сообщить модератору
 Re: создание триггера на изменение в любой таблице определенного пользователя  [new]
Divan
Member

Откуда:
Сообщений: 274
Для механизма поиска используеться Oracle Text. А поиск должен быть универсальный. Т.е. искать необходимое значение в любом документе. При этом различные документы лежат в различных таблицах. Вот по этому и возникла идея сделать общую таблицу которая бы содержала одно поле типа CLOB в которое бы собиралось общая информация по документу.
затем по найденому значению необходимо открыть карточку этого документа. Т.е. в итоговой таблице будет три поля:
Наименование таблицы документов;
Идентификатор карточки в таблице документов;
Общее поле, в котором собраны значения всех символьных полей документов;

Вот это общее поле как раз и должно заполняться в момент занесения ЛЮБОГО документа в проекте.

Вот такая вот задача.
Был вариант использовать мат. представления. но редакция Oracle Standard не поддерживает их.
21 сен 06, 09:05    [3165266]     Ответить | Цитировать Сообщить модератору
 Re: создание триггера на изменение в любой таблице определенного пользователя  [new]
Mikst
Member

Откуда: Москва
Сообщений: 983
А простое вью чем не устараивает?
21 сен 06, 09:59    [3165534]     Ответить | Цитировать Сообщить модератору
 Re: создание триггера на изменение в любой таблице определенного пользователя  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
Пиши генератор триггеров, это достаточно просто. Только учти, что размер базы вырастет в 2 раза и скорость вставки/обновления тоже уменьшится в 2 раза.
21 сен 06, 10:01    [3165546]     Ответить | Цитировать Сообщить модератору
 Re: создание триггера на изменение в любой таблице определенного пользователя  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116068
ИМХО, это типичный пример того, как дизайн базы не справляется с
поставленными задачами.

Ну ладно , поговорим "про пуговицы" :-)
Как я уже сказал, триггер должен кластьтся на каждую таблицу.
Если таблиц очень много, Вы можете попытаться снегнерировать их скриптом.

Скрипт должен читать из DATA DICTIONARY все символьные поля таблицы и
конкатенировать их в CLOB, что то вроде

FOR I IN (SELECT table_name from all_tables
             WHERE OWNER = 'TEST')
LOOP
FOR J IN (SELECT column_name from all_tab_columns
             WHERE table_name = I.table_name abd data_type = 'VARCHAR2'
             ORDER BY COLUMN_ID)
LOOP
v_sql := v_sql ||' :new.'||j.column_name||'||'
......

Пример скрипта генерации триггеров я показывал
здесь, хотя у Вас немного
более сложный случай.
21 сен 06, 10:19    [3165705]     Ответить | Цитировать Сообщить модератору
 Re: создание триггера на изменение в любой таблице определенного пользователя  [new]
zna9
Member

Откуда:
Сообщений: 24
Может быть логичнее использовать готовое решение типа Oracle UltraSearch?
21 сен 06, 10:20    [3165710]     Ответить | Цитировать Сообщить модератору
 Re: создание триггера на изменение в любой таблице определенного пользователя  [new]
Divan
Member

Откуда:
Сообщений: 274
Спасибо за советы.
Буду думать.
21 сен 06, 10:23    [3165740]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить