Главная страница
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.074 c
3-1077209075
Wild
2004-02-19 19:44
2004.03.28
SQL


6-1073415772
Alien
2004-01-06 22:02
2004.03.28
Завершение работы


7-1072692942
Romkin
2003-12-29 13:15
2004.03.28
TRichTextBox, определение размера текста


3-1077718586
TransparentGhost
2004-02-25 17:16
2004.03.28
Or в Locate


9-1062240307
TButton
2003-08-30 14:45
2004.03.28
doCollision