Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Активизация триггеров в IB


Garry_c ©   (2005-01-31 08:14:00) 

По ходу выполнения программы нужно активировать и деактивировать триггер в IB. Подскажите, как это сделать?


Alexander Panov   (2005-02-01 14:30:00) [1]

На вопрос "Зачем отключать триггер?" двумя словами можно ответить так - "для того, чтобы не триггер не срабатывал в определенные моменты, например, при массовой вставке данных для ускорения обработки".


Alexandr   (2005-02-01 06:45:00) [2]

на самом деле все зависит от управления кэшем метаданных, архитектуры (CS или SS) и версии сервера.


jack128   (2005-01-31 22:57:00) [3]

Sergey_Masloff   (31.01.05 22:08) [12]
Сработает после переподключения всех юзеров ;-)

Как для других юзеров не знаю, но у того, кто эти изменения делал, они вступают в силу немедленно после коммита транзакции, в которой alter trigger делали. Проверял в IBE. FB1.5


Sergey_Masloff   (2005-01-31 22:08:00) [4]

jack128 ©   (31.01.05 08:40) [2]

>ALTER TRIGGER name
>[ACTIVE | INACTIVE]
DDL. Сработает после переподключения всех юзеров ;-) Так вроде. Как быстро все забывается... Чуть больше полугода с IB не работал  и... :(


msguns   (2005-01-31 15:01:00) [5]

>Val ©   (31.01.05 13:22) [8]
>Зачем отключать триггер, если можно просто выполнять в нем действия по некому условию?

А можно я задам вопрос по-другому:

Зачем нужен триггер там, где нет однозначного алгоритма воздействия на БД ? Почему нельзя заменить его на ХП, вызываемую по требованию клиента, который "лучше знает условия" ?


Alexandr   (2005-01-31 14:36:00) [6]

это вообще-то делается заведением специального юзера.
и проверкой в триггере
if current_User<>'username'
then begin
end


Соловьев   (2005-01-31 13:43:00) [7]

триггеры нужны для поддержания целостности данных - зачем же создавать себе проблемы? Хочется с юзверями бороться? так они быстро надут эту "фичу"... И тогда будешь ловить тумаки.


Val   (2005-01-31 13:22:00) [8]

Зачем отключать триггер, если можно просто выполнять в нем действия по некому условию?


Desdechado   (2005-01-31 10:15:00) [9]

Зачем тогда триггер, если его нужно все время отключать?!
Да и при многопользовательской работе кто-то может нарваться на момент, когда триггер отключен другим пользователем, а должен быть включен.
И, помнится, есть такая баго-фича, что изменение метаданных не доступны в одной транзакции с изменением данных.


Johnmen   (2005-01-31 09:28:00) [10]

>Что неправильно?

DDL команды недоступны в процедурах и триггерах. ЧИТАЙТЕ ДОКУМЕНТАЦИЮ !


Johnmen   (2005-01-31 09:27:00) [11]

При любой работе это абсурд...


Garry_c   (2005-01-31 09:26:00) [12]

Хочу активировать и деактивировать триггер с помощью
хранимой процедуры, поскольку к ней есть доступ из пользовательского приложения.
В хранимую процедуру вставил следующий код

ALTER TRIGGER vipusk_bi ACTIVE;
insert into ...;
delete from ...;
ALTER TRIGGER vipusk_bi INACTIVE;
suspend;

где vipusk это таблица
IBExpert ругается на слово Alter?! - неизвестное слово.
Что неправильно?
Может ссылку дадите, где про это написано?


Alexandr   (2005-01-31 09:01:00) [13]

другой вопрос, как это будет выглядеть при многопользовательской работе.


jack128   (2005-01-31 08:40:00) [14]

sniknik ©   (31.01.05 8:33) [1]
возможно есть способ легального отключения встроенный так сказать

есть.

ALTER TRIGGER name
[ACTIVE | INACTIVE]
[{BEFORE | AFTER} {DELETE | INSERT | UPDATE}]
[POSITION number]
[AS <trigger_body>] [ terminator]


sniknik   (2005-01-31 08:33:00) [15]

напиши свой тригер зависимым от какой нибудь переменной в IB (да тот же генератор) типа если равен 1 работает, больше пропускаем. установить/менять значение генератора легко...
естественно этот генератор по прямому назначению уже не использовать.

не проблема в обшем (если получится ;о)), могут быть "подводные" камни).
p.s. я с IB не очень "дружу", возможно есть способ легального отключения встроенный так сказать... не знаю прость.


Наверх

Титульная страница Поиск, карта сайта Написать письмо