Текущий архив: 2004.03.28;
Скачать: CL | DM;
Вниз
Update без выполнения триггеров Найти похожие ветки
← →
Апач (2004-02-27 06:40) [0]Есть ли у update какоинибуть параметр чтобы отключить выполнение тригеров
Ето необходимо при выполнении тригера на обновление таблицы когда необходимо изменять записи етои же таблицы, а то происходит бесконечная рекурсия, уже достало ставить всякие условия, может быть кто знает
← →
Zacho © (2004-02-27 07:13) [1]Нет. Но можно перед update сделать ALTER TRIGGER name INACTIVE , а после - ALTER TRIGGER name ACTIVE
А вообще лучше опиши подробнее задачу, а то как-то очень подозрительно выглядит это.
← →
Zacho © (2004-02-27 07:27) [2]Добавлю: сделать ALTER TRIGGER в триггере - не получиться. Можешь попробовать поиздеваться над системными таблицами (см. главу "System tables and views" в Language Reference), но не советую.
Мне все-таки кажется, что у тебя или неправильно спроектирована БД, или непраильно поставлена задача, или ты ее пытаешься решить неравильным способом. Так что лучше подробнее опиши задачу.
← →
Апач (2004-02-27 08:07) [3]Задача следующая
Есть таблица с полями
Основная таблица(I)
1 SI_ID - уникальный ID
2 NAME - нименовани СИ
.....
5 ID_Podr - подразделение на которые ложатся затраты
Таблица комплектов(II)
1 KOMPL_ID - уникальный ID
2 NAME - наименование
Таблица спецификации комплекта(III)
1 KOMPL_ID
2 SI_ID
Так вот сама задача
На таблицу (I) вешается тригер после обновления записи проверяется в какои комплект входит это средство измерения по таблице (III) по ней же определяются все средства измерения которые входят в етот же комплект ноходим ети же записи в таблице (I) и и обновляем там поле ID_Podr чтобы затраты по одному комплекту относились к одному подразделению. Следует заметить что не все записи могут входить в какие либо комплекты поетому присутствие поля ID_Podr в таблице (I) обязательно.
Поетому тригер после обновления таблицы (I) вызывает сам себя,
можно повесить конечно кучу условий как я сделал, но я просто подумал а нет ли у update какогонибуть параметра который бы отключил бы тригер который вызывает етот update...
Вот пожалуй все :) незнаю понятно непонятно...
← →
Апач (2004-02-27 08:10) [4]ах да совсем забыл написать
пробывал писать
ALTER TRIGGER <имя тригера> INACTIVE
.....
ALTER TRIGGER <имя тригера> ACTIVE
ругается на синтаксическую ошибку
← →
Zacho © (2004-02-27 08:14) [5]Не очень внимательно вникал, но может достаточно одного условия IF (NEW.ID_PODR<>OLD.ID_PODR) THEN ..
> Апач (27.02.04 08:10) [4]
Естественно, в триггерах и ХП операторы DDL не доступны.
← →
Апач (2004-02-27 08:18) [6]Захо ты абсолютно прав
Так мы и сделали
но я думал что тригер отключить будет красивее и потом другим понятнее :)
Хотя боюсь что я тока зря трачу время
а опрераторы DLL мы не используем приципиально :)
← →
Zacho © (2004-02-27 08:23) [7]Не DLL, а DDL :)
ALTER TRIGGER относится именно к DDL :)
Страницы: 1 вся ветка
Текущий архив: 2004.03.28;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.074 c