Hallo,
ich setze PostgreSQL 8.3 mit VS 2008 und NPGSQL ein. Gibt es eine Möglichkeit, dass ich zentral (pro Client) benachrichtigt werde, wenn in einer festgelegten Tabelle Änderungen (durch andere clients) gemacht werden? Außerdem möchte ich auch, dass die gemachten Änderungen in der Nachricht enthalten sind. Kann man sowas mit PostgreSQL? Und wenn ja, wie mach ich sowas?
Gruß
Bubblegum
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
In meiner PostgreSQL Dokumentation steht etwas von PQexec nur wo finde ich das?
Unsinn! PQExec ist schon klar. Aber trotzdem verstehe ich die Dokumentation nicht.
Gibt es irgendwo vielleicht ein Beispiel mit C# ind NPGSQL?
Geändert von Bubblegum (16.01.2010 um 12:44 Uhr)
Ich meine mich zu erinnern, das in der Dokumentation für npgsql entsprechendes drin stand. Aber das kann ich hier nicht testen, ein Kunde von mir hat das npgsql damals eingesetzt.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Habe das genauso gemacht wie es in der Doku steht (siehe oben). Leider wird kein Notify ausgelöst!? Muss man vielleicht noch einen Initialisierungsparameter setzen oder so?Code:conn = new NpgsqlConnection("Server=127.0.0.1;User id=npgsql_tests;password=npgsql_tests;"); conn.Open(); NpgsqlCommand command = new NpgsqlCommand("listen notifytest;", conn); command.ExecuteNonQuery(); conn.Notification += new NotificationEventHandler(NotificationSupportHelper); command = new NpgsqlCommand("notify notifytest;", _conn); command.ExecuteNonQuery(); Console.ReadLine(); // To prevent program termination before notification is handled.
Warum verwendest du einmal "conn" und einmal "_conn"?
Außerdem ist es wohl eleganter, wenn du das NOTIFY einfach in psql absetzt. Dann weißt du, dass das auch durchgeführt wurde. Zumindest zum Testen vereinfacht das die Sache erheblich.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
"_Conn" erzeuge ich in meiner Applikation nur einmal und nutze die Connections ausschließlich für "listen". Die "conn's" sind meine temporären Verbindungen pro Datenbankzugriff. Ich habe jetzt festgestellt, dass sobald ich jedesmal listen aufrufe ich auch das notify event bekomme. Ich bekomme es aber nicht dynamisch, was ja eigentlich der Sinn sein sollte, sondern muss immer listen aufrufen!? Was stimmt da noch nicht?Warum verwendest du einmal "conn" und einmal "_conn"?
Hä? Bahnhof.
Also, in deiner Applikation setzt du ein "LISTEN" auf einen bestimmten Begriff, z. B. auf einen Tabellennamen.
Dann schreibst du dir einen AFTER Trigger als FOR EACH STATEMENT, der bei INSERT, UPDATE und DELETE ausgelöst wird. In der dort aufgerufenen Funktion löst du das NOTIFY mit dem Tabellennamen aus. Wenn du pl/pgSQL nimmst, stehen dir die Variablen TG_TABLE_SCHEMA und TG_TABLE_NAME zur Verfügung. Andere Programmiersprachen für serverseitige Funktionen handhaben das ähnlich.
Der Trigger wird bei jeder Operation aufgerufen, die die Tabelle verändert. Dort wird das Notify an deine Applikation gesandt.
*voila*
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Das ist nicht mein Problem, dass Notify Event wird abgesetzt. Auch das Listen greift. Aber nur, wenn ich es immer wieder manuell aufrufe, und gerade das soll doch automatisch gehen. Sonst muss ich ja mit einer Schleife ein Polling machen und genau das will ich ja nicht. Klarer?
Ich habe dein Problem immer noch nicht verstanden.
Wann genau bekommst du das Event zugesandt?
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen