trigger function и "запустил и забыл"

Пишу "мастер-мастер-асинхронную-репликацию" для своих нужд. Решил - это сделать с помощью своей log таблицы и привязанной к ней триггерной функцией. Триггерная функция будет запускать хранимые процедуры на соседних серверах и таким образом будет происходит репликация.
Вопрос: Не знаю как запустить тригерную функцию по принципу "запустил и забыл". Единственное, до чего докопался - это писать триггерную функцию на С (или perl) создавать дочерний процесс с помощью fork() и убивать родительский процесс. Может у кого есть другие идеи?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Принцип "запустил и забыл"

Принцип "запустил и забыл" мне непонятен :) Поясните подробней как хотите сделать.

Я хочу, чтобы триггерная

Я хочу, чтобы триггерная функция запустила бы некутурую процедуру и завершила бы работу недожидаясь окончания процедуры

Тогда на мой взгляд это

Тогда на мой взгляд это противоречит самой логике использования триггерных функций.
Да и сами посудите, вы запустите триггерную функцию чтобы она произвела репликацию, а если в этот момент вы очередной раз снова запустите триггерную функцию, то получается у вас первая репликация не завершилась и должна начаться следующая? Или вас смущает, что до окончания репликации останется коннект к другому серверу? Тогда сделайте проще - пусть ваша триггерная функция просто в БД другого сервера устанавливает флаг, что нужно выполнить репликацию и закрывает коннект, а дальше уже удалённый сервер будет открывать коннект и делать репликацию.

удаленных серверов несколько

удаленных серверов несколько и половина в текущий момент может быть недуступна, раз так, то это приведет к "подвисанию" (долгому выполнению) триггерной функции, и это может заметить пользователь, он запустил свой insert, тот в сою очередь вызвал триггер, а пользователь сидит и материться - "у меня что-то прога зависла"

А у вас необходимость

А у вас необходимость репликации будет решать пользователь? Наверное всё-таки нет. Админ же может и подождать.

Решать буду я (т.е.

Решать буду я (т.е. программист), я хочу, чтобы изменения реплицировались на соседние сервера "мгновенно" если это возможно. Недоступные сервера в текущий моменте времени, получат свою реплику позже, думаю это будет делать демон (служба).

Тогда ставьте Slony и будет

Тогда ставьте Slony и будет вам счастье.
В противном случае, то что вы хотите сделать триггерной функцией - нелогично!
Получается, что триггерная функция должна отработать независимо от того выполнит ли она то действие для которого она предназначена или нет, что как я уже написал противоречит самой логике её работы.
Рад, что нашли необходимое.

Похоже

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023