Главная страница
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.024 c
11-1056821442
mox
2003-06-28 21:30
2004.03.28
Incompatible types: TEditOptions and TEditOption


6-1073910254
INTAARI
2004-01-12 15:24
2004.03.28
как узнать, что данные дошли в TcpClient


1-1078484177
PiratA
2004-03-05 13:56
2004.03.28
Динамическое создание компонент...


3-1077339999
Sirus
2004-02-21 08:06
2004.03.28
Можно ли выбрать в таблице записи у которых какое-либо поле NULL?


1-1078587931
mak_other_user
2004-03-06 18:45
2004.03.28
Форматирование тектового файла.