2012-01-28 3 views
1

Можно ли написать триггер Postgresql, который может записывать данные в базу данных SQL Server 2008? У меня есть Windows Postgresql DB (9.1) и есть существующий триггер, который записывает данные в таблицу с именем finaldata. Могу ли я затем запустить триггер в таблице finaldata, которая будет писать на SQL Server через ODBC или какой-либо другой вариант подключения?Триггер Postgresql для записи данных в SQL Server через ODBC?

Я застрял с этим! Должен ли я попытаться с plpgsql или на другом языке лучший вариант? Мой стандартный метод для написания функции является:

CREATE OR REPLACE FUNCTION "public"."finaldata"() RETURNS trigger AS 
$body$ 
DECLARE 
BEGIN 

    "Connect to SQL Server and write data to single table newdata " 

END; 
$body$ 
LANGUAGE 'plpgsql' 
+0

я не пошел бы с plpgsql на это ... Вы знаете другие языки PL? Например, PL/Python? – cha0site

+0

Ничего страшного опыта Python. У вас есть это для работы с PL/Python? Вы использовали новую функцию Foreign Table в 9.1? – user1044111

ответ

1

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

Таким образом можно использовать триггер postgresql (на любом языке).

Для ODBC имеется внешняя обертка данных, которую вы можете использовать для подключения к SQL Server.

Postgresql Foreign Tables

ODBC Foreign Data Wrapper

+0

Выглядит многообещающе - хотя передний край. Вам удалось заставить это работать? Есть ли оболочка SQL Server или мне нужен ODBC? Ссылка https://github.com/ZhengYang/odbc_fdw .. но она выглядит довольно новой – user1044111

1

Существует DBI-Link, которые вы можете использовать с plperl и драйвер ODBC для получения доступа к SQL Server (непроверенные). Однако имейте в виду, что для правильного управления транзакциями (то есть, данные на SQL-сервере всегда отражают данные на сервере PostgreSQL), вам необходимо реализовать two-phase commit protocol или что-то подобное себе.

Смежные вопросы