TRIGGER INSERT in andere Datanbank

Hallo zusammen,

ich bin neu hier und möchte mich kurz vorstellen:

ich bin seit 15 Jahren IT Consultant im Enterprise Management Umfeld und habe habe Programmiererfahrung mit der Programmiersprache Perl. Mit Datenbanken hatte ich natürlich immer wieder zu tun, aber eigene Datenbanken hatte ich bisher weder programmiert noch aufgesetzt. Bisher …

Bisher hatte ich folgendes erfolgreich im Einsatz: auf einem Server eine Datenbank mit mehreren Tabellen. Nun möchte ich aber die Informationen, welche ich bisher in den Tabellen in einer Datenbank hatte auf zwei Datenbanken auf dem selben Server unterteilen (aus welchem Grund auch immer). In einer Tabelle habe ich einen Trigger und führe ein Insert in eine andere Tabelle durch. Die Datenbank eins hat einen anderen Owner als die Datenbank zwei.

Nun funktioniert jedoch das Insert in die Tabelle der Datenbank zwei nicht mehr :frowning:

In der Datenbank eins befindet sich “Quelle” ‘event’, und in der zweiten Datenbank das Ziel ‘alarmonevent’. Hier die Infos von der Datenbank eins:

BEGIN;

DROP TRIGGER IF EXISTS ti_alarm ON event;
CREATE OR REPLACE FUNCTION fi_alarm() RETURNS TRIGGER AS $$
BEGIN
    INSERT INTO alarmonevent (createtime, remoteid, state_no, alias, state_msg) values (NEW.createtime, NEW.id, NEW.state_no, NEW.alias, NEW.state_msg);
    return new;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER ti_alarm AFTER INSERT ON event FOR EACH ROW
EXECUTE PROCEDURE fi_alarm();

END;

Sicherlich mus ich “nur” das Kommando “INSERT INTO alarmonevent …” abändern, da ja jetzt das Ziel in einer anderen Datenbank liegt, aber ich weiß nicht wie. Ich habe in der zweiten Datenbank zusätzlich noch Berechtigung für den Benutzer der Datenbank eins vergeben:

GRANT INSERT ON alarmonevent TO user_db1;

Im Internet gibt es zwar eine Menge Einträge zu dieser Thematik, jedoch finde ich keine Lösung für mich. Das liegt sicherlich auch an meinen Unkenntnissen bezüglich SQL Programmierung :frowning:

Vielleicht kann mich hier jemand an das Problem heranführen oder mir Hilfestellung geben. Vielen Dank vorab an alle, die sich meiner annehmen :slight_smile: :slight_smile: :slight_smile:

mfg André

Das geht so simpel nicht, PG kennt keinen Cross-Database-Zugriff.

Hilfreiche Stichworte für Googel - Suche sind: FDW, DBI-Link, Slony.

Mit FDW (Tag: “fdw” / PostgreSQL Extension Network) kannst Du externe Datenquellen/senken einbinden, mit DBI quasi auf Client-Seite Dich mit 2 DB’s verbinden und Slony ist eine Replikationslösung, mit der Du einzelne Tabellen zwischen Datenbanken replizieren kannst.

Vielen Dank erst einaml. Mache mich mit den Suchbegriffen auf die Reise ins Internet .

Die Verbindung über DBI ist mir kler (weil in Perl verfügbar), die anderen Sachen muss ich nachlesen …

mfg André

Hey, hey,

das klingt alles nach “mehreren Datanbank Servern” mit dem Replizieren etc.

Ich bin doch nur auf einem Server mit unterschiedlichen Datanbanknamen … :frowning: