powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Время выполнения триггера
15 сообщений из 15, страница 1 из 1
Время выполнения триггера
    #32430752
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А триггеру как нибудь сказать, что бы он выполнялся только после потверждения транзакции можно?
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32430767
Andrey_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Триггер может выполнятся только в контексте транзакции. А где ему выполнятся после завершения транзакции?
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32430778
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Триггер может выполнятся только в контексте транзакции. А где ему выполнятся после завершения транзакции?

А как бы тогда сделать, что бы действие (там вызов функции черз UDF) выполнялось после подтверждения изменений?
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32430811
Andrey_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создать в UDF отдельный спящий поток. По таймеру его разбудить. Только это все изврат страшнючий. Ты скажи зачем тебе это? Что твоя UDF делает? Может сделаем не выходя из контекста транзакции.
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32430824
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это передача событий. Стандартная IBEvents не устраивает, т.к. нет возможности передавать параметры.
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32430879
Andrey_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм... Насколько я знаю FB 1.5 может передавать параметрические события. Другое дело что параметрические события не поддерживаются IBX. Может легче переписать IBEvent так чтоб он мог принимать параметры? А про "после подтверждения транзакции" скорее всего прийдется забыть. Насколько я знаю IB/FB при завершении транзакции не генерирует никаких событий доступных разработчику... А стоило бы...
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32430913
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey_Насколько я знаю FB 1.5 может передавать параметрические события.
Нет не может. В планах было, но Дмитрий не включил эту ветку в основное дерево FB1.5. Не всё там так просто как хотелось бы.
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32430957
Andrey_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МимопроходящийНет не может.
Хм... Чтож, значит верной дорогой идете, товарищь Лебедкин. Только всеравно "IB/FB при завершении транзакции не генерирует никаких событий доступных разработчику". Возможно перед вызовом commit если клиент будет вызывать UDF которая отправляет событие, а клиенты поймавшие его будут через промежуток времени (1 с. например) будут понимать что произошел commit... Возможно это пойдет... Ничего лучше придумать немогу.
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32431043
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey_IB/FB при завершении транзакции не генерирует никаких событий доступных разработчику
Неверно. Именно по Commit генерится Event.
Чем он не устраивает автора вопроса, не понимаю.
Вопли ламеров: "Не работаИИть!", в расчёт не принимаю.
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32431053
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВозможно перед вызовом commit если клиент будет вызывать UDF которая отправляет событие, а клиенты поймавшие его будут через промежуток времени (1 с. например) будут понимать что произошел commit... Возможно это пойдет... Ничего лучше придумать немогу.
Да, я тоже прпшел к такому же решению - поспать маленько на клиенте, перед запросом.
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32431056
Andrey_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МимопроходящийИменно по Commit генерится Event.
Че правда?... Блин, совсем опростоволосился... всё, в монастырь ухожу... женский :)
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32431061
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИменно по Commit генерится Event.
Чем он не устраивает автора вопроса, не понимаю.
Вопли ламеров: "Не работаИИть!", в расчёт не принимаю
Я же объяснил чем не устраивает: параметры там передать нельзя! А мне они жизнено необходимы!
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32431157
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не все пути ведут к Храму
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32431206
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, к стати, тут запустил нехитрую процедурку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE SPAM AS
  DECLARE I INTEGER= 0 ;
BEGIN
  WHILE (I< 1000000000 ) DO
  BEGIN
    POST_EVENT 'MSG_'||I;
    I=I+ 1 ;
  END
END


И ничего страшного не происходит. Эта процедурка у меня уже пол часа крутиться, загрузив один процессор. Сервер выгреб пока всего лишь 16 метров памяти, так что мне кажется зря Д.Еманов волнуется по поводу того что стэк закончиться
...
Рейтинг: 0 / 0
Время выполнения триггера
    #32432148
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ ничего страшного не происходит. Эта процедурка у меня уже пол часа крутиться, загрузив один процессор. Сервер выгреб пока всего лишь 16 метров памяти, так что мне кажется зря Д.Еманов волнуется по поводу того что стэк закончиться

Я разве что-то говорил про стек? Ивенты хранятся в блоке разделяемой памяти (маппированный файл <host>.evn в корне сервера), ибо должны разделяться между процессами классика. Этот блок имеет фиксированный размер (256к по дефолту). Сколько не увеличивай его в конфиге, все равно может не хватить. Это первое. Второе - то, что ивенты передаются клиенту одним пакетом, размер которого ограничен 64к.

И есть еще последнее. В твоем примере сервер вообще не создает дескрипторы ивентов и не помещает все эти строки в разделяемую память ;-)
Для этого должен быть хотя бы один слушатель всех этих 'MSG_' || I. А так сервер просто кидает все это добро в свой пул транзакции и теряет при коммите/роллбеке. Так что эти замеры никакого практического смысла не имеют.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Время выполнения триггера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]