![]() |
|
Модераторы: LSD |
![]()
|
|
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: нет Всего: 9 |
у меня есть триггер который вызывается при INSERT/UPDATE и при этом апдейтит ту же таблицу (: и естественно входит в рекурсию
как этого избежать (пс, апдейтить таблицу приходится при любых раскладах) может есть возможность как то сказать триггеру что при апдейте той то колонки ничего не делать? -------------------- SCJP 6 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 3 Всего: 538 |
Тебе надо изменять ту же строку для которой был вызван триггер, или другую?
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: нет Всего: 9 |
ту же
Добавлено через 6 минут и 12 секунд в двух словах опишу задачку, есть таблица с какими то данными, и нужно сделать по некоторым ее колонкам релевантный текстовый поиск (благо постгрес это умеет делать), собсно добавляю я туда еще одну колонку с tsvector'ом, в котором храню нужную мне инфу, но вот беда, его нужно держать так сказать up to date ) для этого решил использовать триггер, но собсно этот триггер пока у меня уходит в рекурсию :( проблема еще усугубляется тем что в таблице есть форинкеи на внешние таблицы с которых нужно вынемать инфу для формирования tsvector'а может есть другие способы решения моей проблемы? я еще смотрел в сторону вьюхи, но я так понял она формируеться каждый раз когда идет запрос к ней, а это мне не подходит, колличество данных может быть относительно большим (до 1кк записей) -------------------- SCJP 6 |
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: нет Всего: 9 |
пока сделал проверку на то что строки не обновились
что то по типу
тоесть если определенные строки имеют то же значение после апдейто то ничего не делаем -------------------- SCJP 6 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 3 Всего: 538 |
Ну так зачем вообще, весь этот огород с INSERT/UPDATE. Просто создай тригер BEFORE и меняй NEW значения. Типа как тут с полями current_timestamp и current_user:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: нет Всего: 9 |
использую афтер так как тсвектор формируется из значений не только с данной таблицы но и из других (есть форинкеи на данные из других таблиц)
но решение которое я писал выше мне очень даже подошло, в рекурсию не входим, скорость выполнения тоже удовлетворяет -------------------- SCJP 6 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PostgreSQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |