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

А как бы тогда сделать, что бы действие (там вызов функции черз UDF) выполнялось после подтверждения изменений?
...
Рейтинг: 0 / 0
04.03.2004, 11:22
    #32430811
Andrey_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время выполнения триггера
Создать в UDF отдельный спящий поток. По таймеру его разбудить. Только это все изврат страшнючий. Ты скажи зачем тебе это? Что твоя UDF делает? Может сделаем не выходя из контекста транзакции.
...
Рейтинг: 0 / 0
04.03.2004, 11:27
    #32430824
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время выполнения триггера
Это передача событий. Стандартная IBEvents не устраивает, т.к. нет возможности передавать параметры.
...
Рейтинг: 0 / 0
04.03.2004, 11:50
    #32430879
Andrey_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время выполнения триггера
Хм... Насколько я знаю FB 1.5 может передавать параметрические события. Другое дело что параметрические события не поддерживаются IBX. Может легче переписать IBEvent так чтоб он мог принимать параметры? А про "после подтверждения транзакции" скорее всего прийдется забыть. Насколько я знаю IB/FB при завершении транзакции не генерирует никаких событий доступных разработчику... А стоило бы...
...
Рейтинг: 0 / 0
04.03.2004, 12:09
    #32430913
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время выполнения триггера
Andrey_Насколько я знаю FB 1.5 может передавать параметрические события.
Нет не может. В планах было, но Дмитрий не включил эту ветку в основное дерево FB1.5. Не всё там так просто как хотелось бы.
...
Рейтинг: 0 / 0
04.03.2004, 12:29
    #32430957
Andrey_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время выполнения триггера
МимопроходящийНет не может.
Хм... Чтож, значит верной дорогой идете, товарищь Лебедкин. Только всеравно "IB/FB при завершении транзакции не генерирует никаких событий доступных разработчику". Возможно перед вызовом commit если клиент будет вызывать UDF которая отправляет событие, а клиенты поймавшие его будут через промежуток времени (1 с. например) будут понимать что произошел commit... Возможно это пойдет... Ничего лучше придумать немогу.
...
Рейтинг: 0 / 0
04.03.2004, 12:53
    #32431043
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время выполнения триггера
Andrey_IB/FB при завершении транзакции не генерирует никаких событий доступных разработчику
Неверно. Именно по Commit генерится Event.
Чем он не устраивает автора вопроса, не понимаю.
Вопли ламеров: "Не работаИИть!", в расчёт не принимаю.
...
Рейтинг: 0 / 0
04.03.2004, 12:58
    #32431053
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время выполнения триггера
авторВозможно перед вызовом commit если клиент будет вызывать UDF которая отправляет событие, а клиенты поймавшие его будут через промежуток времени (1 с. например) будут понимать что произошел commit... Возможно это пойдет... Ничего лучше придумать немогу.
Да, я тоже прпшел к такому же решению - поспать маленько на клиенте, перед запросом.
...
Рейтинг: 0 / 0
04.03.2004, 12:59
    #32431056
Andrey_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время выполнения триггера
МимопроходящийИменно по Commit генерится Event.
Че правда?... Блин, совсем опростоволосился... всё, в монастырь ухожу... женский :)
...
Рейтинг: 0 / 0
04.03.2004, 13:01
    #32431061
Лебедкин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время выполнения триггера
авторИменно по Commit генерится Event.
Чем он не устраивает автора вопроса, не понимаю.
Вопли ламеров: "Не работаИИть!", в расчёт не принимаю
Я же объяснил чем не устраивает: параметры там передать нельзя! А мне они жизнено необходимы!
...
Рейтинг: 0 / 0
04.03.2004, 13:37
    #32431157
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время выполнения триггера
Не все пути ведут к Храму
...
Рейтинг: 0 / 0
04.03.2004, 13:55
    #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
05.03.2004, 09:53
    #32432148
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время выполнения триггера
авторИ ничего страшного не происходит. Эта процедурка у меня уже пол часа крутиться, загрузив один процессор. Сервер выгреб пока всего лишь 16 метров памяти, так что мне кажется зря Д.Еманов волнуется по поводу того что стэк закончиться

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

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


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