Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.048 c
4-1073900515
NikeOLD
2004-01-12 12:41
2004.03.28
Создание расписания в программе (планировщика)


14-1077790429
Иксик
2004-02-26 13:13
2004.03.28
Знатокам шахматного софта


1-1078483150
Well
2004-03-05 13:39
2004.03.28
как создать Слайд шоу


6-1073678165
Asail
2004-01-09 22:56
2004.03.28
Вопрос по Active Directory


1-1078939826
Delphi5.01
2004-03-10 20:30
2004.03.28
IMENNO KATALOG