Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тригер, смекалка не помогает...
|
|||
|---|---|---|---|
|
#18+
вступление: Суть задачи заключается в следующем: есть таблица которая представляет древо nested sets, id|pid|name|left|right приблизительное описание работы: при запросах используются только id|pid|name left|right заполняются с помощью тригеров(тригера) при удалении обьекта с конкретным id тригер 1) удаляет, все обьекты у которых lft между lft и rgt удаляемого обьекта 2) изменяет lft или rgt других обьектов если эти lft или rgt больше lft удаляемого обьекта 3)блаблаблафырфырфыр суть проблемы: тригер вызывается несколько раз из-за самого себя, тоесть операции по удалению которые он выполняет вызывают срабатывание этого самого тригера, в итоге lft и rgt коректируются несколько раз и становятся неправильными задача: как сделать чтоб операции по удалению которые вызывает тригер не вызывали этот тригер опять? спасибо, за то что дочитали досюда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2005, 01:53 |
|
||
|
Тригер, смекалка не помогает...
|
|||
|---|---|---|---|
|
#18+
... если кто не понял в чем речь то вот грубое решение моей проблемы: в теле тригера: begin: 1). убираем тригер с таблицы 2). выполняем необходимые изменения 3). ставим тригер заново end; я надеюсь что кто нибудь предложит более быстрое и логичное решение типа: begin: if(проверка на то что тригер вызван не им же самим ){ выполняем необходимые изменения } end; язык на котором собираюсь етот тригер писать - plpgsql ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2005, 02:16 |
|
||
|
Тригер, смекалка не помогает...
|
|||
|---|---|---|---|
|
#18+
1) добавить поле "не нуждается в обработке триггером" в изменяемую таблицу (для удаления не подойдет) 2) записывать в отдельную таблицу список id изменяемых/удаляемых строк, для которых не нужно выполнять триггер 3) хранить признак временного отключения триггера в отдельной табличке 4) хранить такой признак в глобальных переменных (нужен pl/perl, pl/tcl или pl/python) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2005, 03:34 |
|
||
|
Тригер, смекалка не помогает...
|
|||
|---|---|---|---|
|
#18+
фффф1) добавить поле "не нуждается в обработке триггером" в изменяемую таблицу (для удаления не подойдет) 2) записывать в отдельную таблицу список id изменяемых/удаляемых строк, для которых не нужно выполнять триггер 3) хранить признак временного отключения триггера в отдельной табличке 4) хранить такой признак в глобальных переменных (нужен pl/perl, pl/tcl или pl/python) сенькс мэн =] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2005, 04:57 |
|
||
|
Тригер, смекалка не помогает...
|
|||
|---|---|---|---|
|
#18+
Можно еще извратиться через VIEW и RULE: Код: plaintext 1. 2. 3. 4. 5. 6. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2005, 11:01 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33287642&tid=2006987]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
135ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 483ms |

| 0 / 0 |
