trigger

Dmitry Bychkov
Дата: 29.07.2003 18:38:01
Hi!

Не подскажите ли как:

Заставить триггер, который сработал на одном PostGre сервере, менять содержимое таблицы, находящейся на другом сервере?
Т.е. по событию (например добавление в таблицу) срабатывает тригер и выплевывает на удаленный сервер - "в таблицу что-то добавили"
Stellar.
Дата: 29.07.2003 18:58:12
Написать триггер на C ?
Shweik
Дата: 29.07.2003 20:16:53
Как чего то сделать на другом сервере?\r
Ответ можно выбрать отсюда /topic/35415\r
Коротко говоря ставишь из ../contrib /dblink этот самый dblink\r
и выполняешь произвольные запросы к удаленной базе или другим базам на твоем хосте. Например :\r
mdb=# select dblink_connect('hostaddr=200.191.132.2 port=5432 dbname=radius us \r
er=postgres password=1'); \r
dblink_connect \r
---------------- \r
OK \r
(1 запись) \r
\r
mdb1=# select * from dblink('select username from radacct') as t(name varchar);\r
name \r
---------- \r
gennadiy \r
pionnier \r
vova \r
pionnier \r
gennadiy \r
vova \r
vova \r
testik \r
testik \r
gennadiy \r
testik \r
===============================================\r
Вот и все. Пиши триггер,или правило , вызывающее dblink() и будет тебе счастье ;)\r
Удачи!
Shweik
Дата: 29.07.2003 20:18:26
2Stellar
Хмм есть стандартные решение и нечего поощрять изобретение велосипедов
и "автоматических думателей" ;)
Dmitry Bychkov
Дата: 30.07.2003 14:55:30
Огромное спасибо за помощь!

А есть ли способ "подцепить" базу с сервера другой СУБД? (например MS SQL)
Если нет, то каким образом можно заставить триггер выполнять какие-либо действия помимо манипуляций с данными? Скажем письмишко отбить, что произошло что-то и т.п.?
Stellar.
Дата: 30.07.2003 16:34:36
А вот в этом случае действительно придется писать триггер на C. Либо на untrusted plperl.
Dmitry Bychkov
Дата: 30.07.2003 17:56:06
Спасибо!

А не подскажите где бы про это почитать поподробнее можно было? про то как можно триггеры, созданные через С и perl применять в PostgreSQL?
А может быть примерчик какой-нибудь посмотреть можно? Например триггер, написаный на любом языке, позволяющий отправить сообщение по эл. почте.

Еще раз, спасибо!
Dmitry Bychkov
Дата: 30.07.2003 17:56:08
Спасибо!

А не подскажите где бы про это почитать поподробнее можно было? про то как можно триггеры, созданные через С и perl применять в PostgreSQL?
А может быть примерчик какой-нибудь посмотреть можно? Например триггер, написаный на любом языке, позволяющий отправить сообщение по эл. почте.

Еще раз, спасибо!
Niemi
Дата: 30.07.2003 21:02:44
к сожалению в документации найти примеры довольно трудно, сам пока не нашёл, попробуй покапаться в архивах и www.google.com

http://archives.postgresql.org/pgsql-docs/2000-05/msg00007.php
Shweik
Дата: 31.07.2003 15:07:49
>А есть ли способ "подцепить" базу с сервера другой СУБД? (например MS SQL)
Способ есть - это различного рода ODBC proxy.
Например я пользуюсь для забора данных из табличек M$ и Paradox такой
штукой dbtcp прозывается. Живет он тут : http://sourceforge.net/projects/dbtcp/ .
Под виндой висит его сервер.
Клиент пускается на фрюшке, и по крону забирает например свежие данные в поток INSERT-ов.
В другом варианте - клиент dbtcp вызывается из постгресовой ХП писанной на plperl. И это гораздо красивей и стабильней скрипта пускаемого по крону,
зато его быстрее написать ;)

К сожалению то что предлагается - довольно сырая вещь которую еще
нужно круто "обработать рашпилем" :) Вдобавок на мои вопли о глюках откликнулся только разработчик клиента.... а проблемы всплывали на серваке.
Однако это все было поборено в течении недели схема устаканилась и работает
уже около полугода.
Возможно меня поправят - указав на какието другие пути увязки с M$ SQL/Sybase/Oracle и прочая....
Тут все просто- основная причина использования dbtcp - отсутствие поддержки Paradox в Unix-ODBC. Если кто знает более качественный и freeware-ный продукт подскажите ;)