Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизАктивизация триггеров в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c