Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
11-1090839820
Юрий Ж.
2004-07-26 15:03
2005.03.06
А че бобик сдох?


3-1107439716
Basil
2005-02-03 17:08
2005.03.06
Отображение изменений в БД


3-1107531185
moon_atik
2005-02-04 18:33
2005.03.06
отчёт в delphi


14-1108311197
AG.Smit
2005-02-13 19:13
2005.03.06
Как поиграть в CS:Source по модемам, типа Hyper Terminal?


14-1108381409
Игорь нтк
2005-02-14 14:43
2005.03.06
Посоветуйте литературу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский