Вопрос № 43483: Здравствуйте господа эксперты! Работаю с БД Firebird 1.5. Возникла необходимость программно включить и выключить триггер. Не могу понять как. Подскажите хотя бы куда копать. Большое спасибо.
С уважение ХРУСТ!...Вопрос № 43547: при закрытии программы соединение с базой данноых должно разрываться или это происходит автоматически...
Вопрос № 43.483
Здравствуйте господа эксперты! Работаю с БД Firebird 1.5. Возникла необходимость программно включить и выключить триггер. Не могу понять как. Подскажите хотя бы куда копать. Большое спасибо.
С уважение ХРУСТ!
Отвечает: Zubex
Здравствуйте, Кныш Александр Александрович!
Не знаю какими компонентами пользуетесь, но примерно так:
Procedure TriggerSwith(NameTrig:String;On:Boolean);
var q:TQuery;
begin
q:=TQuery.Create(nil);
//Сдесь назначили бд, запустили транзакцию
q.Sql.Add('alter trigger '+NameTrig+' ');
if On then q.Sql.Add('active')
else q.Sql.Add('inactive');
try
ExecQuery;
//Commit транзакции
except
// Rollback транзакции
end;
q.Free;
end;
Удачи!!!
--------- Если не знаешь что сказать - лучше промолчи...
Ответ отправил: Zubex (статус: 6-ой класс)
Ответ отправлен: 18.05.2006, 16:22
Отвечает: sir henry
Здравствуйте, Кныш Александр Александрович!
Вопрос, мягко говоря, странный. Триггер вводится для того, чтобы В ОБЯЗАТЕЛЬНОМ ПОРЯДКЕ провести какое-то действие. Следовательно нет никакого смысла включать и выключать его в программе. Возможно Вы просто не можете сформулировать алгоритм действия триггера?
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 19.05.2006, 05:56
Вопрос № 43.547
при закрытии программы соединение с базой данноых должно разрываться или это происходит автоматически
Отправлен: 19.05.2006, 09:53
Вопрос задал: злой фей (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архангельский Андрей Германович
Здравствуйте, злой фей!
Как правило это происходит автоматически. Но лучше записать это в свойство onClose
--------- Если дело заслуживает быть сделаным, то оно заслуживает чтобы его сделали ХОРОШО
Отвечает: Shcherbakov Anton
Здравствуйте, злой фей!
если до выполнения программы соединение не было установлено в труе а устанавливалось в программе, то при корректном завершении программы соединение должно закрываться. а есл ипрограмма завершилась аварийно, то соединение может оставаться активным
Ответ отправил: Shcherbakov Anton (статус: 1-ый класс)
Ответ отправлен: 19.05.2006, 10:00
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, злой фей!
Вообще-то обычно соединение разрывается автоматически, как Вам уже писали, но иногда, особенно если программа завершается аварийно, может остаться "условно активное" соединение с базой. Поэтому лучше все-таки разрывать соединение "вручную". Советую все-таки прописывать разрыв на свойство onCloseQuery, а не на свойство onClose. Я где-то читал, что событие onClose может не всегда возникать (опять же в аварийных ситуациях).
--------- Ответы на все вопросы - на сайте www.ya.ru :)