Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

Активизация триггеров в IB   Найти похожие ветки 

 
Garry_c   (2005-01-31 08:14) [0]

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


 
sniknik ©   (2005-01-31 08:33) [1]

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

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


 
jack128 ©   (2005-01-31 08:40) [2]

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

есть.

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


 
Alexandr ©   (2005-01-31 09:01) [3]

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


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

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

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

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


 
Johnmen ©   (2005-01-31 09:27) [5]

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


 
Johnmen ©   (2005-01-31 09:28) [6]

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

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


 
Desdechado ©   (2005-01-31 10:15) [7]

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


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

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


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

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


 
Alexandr ©   (2005-01-31 14:36) [10]

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


 
msguns ©   (2005-01-31 15:01) [11]

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

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

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


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

jack128 ©   (31.01.05 08:40) [2]

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


 
jack128 ©   (2005-01-31 22:57) [13]

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

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


 
Alexandr ©   (2005-02-01 06:45) [14]

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


 
Alexander Panov ©   (2005-02-01 14:30) [15]

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



Страницы: 1 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
3-1107785308
Davinchi
2005-02-07 17:08
2005.03.06
Очистка и упаковка dbf


1-1108975451
snake_r
2005-02-21 11:44
2005.03.06
Закрытие формы


14-1108457078
Franzy
2005-02-15 11:44
2005.03.06
Не ставится Win98


14-1107803550
Nic87
2005-02-07 22:12
2005.03.06
музыка NFS 5 Pirshe


3-1107260714
Stanislav
2005-02-01 15:25
2005.03.06
IP адрес сервера