Главная страница
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.04 c
1-1078689740
Митяй2
2004-03-07 23:02
2004.03.28
Приложение должно быть не только практичным, но и...


14-1078053776
hp_deskjet_3650
2004-02-29 14:22
2004.03.28
как устранить проблему с картриджем?


3-1074853610
b0bi
2004-01-23 13:26
2004.03.28
что лучше юзать char или varchar?


1-1078918087
Тимохов
2004-03-10 14:28
2004.03.28
Печать и предпросмотр.


14-1077850939
Думкин
2004-02-27 06:02
2004.03.28
С днем рождения! 27 февраля.