Nein, PostgreSQL bietet (leider) nichts vergleichbares.
Trigger gibt es nur für INSERT, UPDATE und DELETE.
Moin,
In Oracle gibt es Alerts
In MySQL 5.1 gibts nun Events
Und gibt es etwas equivalentes für Postgres?
Funktionsweise:
Ein Oracle Alert prüft ob eine bestimmte Bedingung in einer Tabelle erreicht ist, als Konsequenz erhält man so etwas wie eine Exception auf die das Client
Programm reagieren muss. Besonders sinnvoll z.B wenn man dauerhaftes
Pollen durch periodische SELECT's vermeiden möchte, nur um heraus zu finden
das sich ein Wert verändert hat.
Wenn es das nicht gibt, kann ich dann mit pg/plSQL dann eine eigene Exception Art definieren die z.B mittels Rule oder Trigger bei erreichen eines
bestimmten Zustands in einer Tabelle eine Exception an den Client schickt?
Dann wüsste der Client das definitiv zu verarbeitende Daten vorliegen und
diese nun bearbeitet werden müssen. Der Client an dieser Stelle ist ein
C/C++ System Deamon der permanent mit der DB via Unix Socket connectiert
ist.
Falls das alles nicht möglich ist, wie schauts im Falle einer UDF aus, bietet
das mehr Spielraum?
Gruß Marc
Nein, PostgreSQL bietet (leider) nichts vergleichbares.
Trigger gibt es nur für INSERT, UPDATE und DELETE.
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
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Die Events werden aber nicht von der Datenbank selbst ausgelöst sondern von anderen Clients.
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
Ich zitiere mal aus der originalen Frage:
AndreasFunktionsweise:
Ein Oracle Alert prüft ob eine bestimmte Bedingung in einer Tabelle erreicht ist, als Konsequenz erhält man so etwas wie eine Exception auf die das Client
Programm reagieren muss. Besonders sinnvoll z.B wenn man dauerhaftes
Pollen durch periodische SELECT's vermeiden möchte, nur um heraus zu finden
das sich ein Wert verändert hat.
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Ja, und? Dafür muss in PostgreSQL ein Trigger das Event auslösen. Und Events (also Trigger) auf Systemereignisse gibt es gar nicht.
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
Ich hab in der Frage nichts von der Notwendigkeit von Triggern auf Systemtabellen oder so gelesen, sondern nur, daß ein Client benachrichtigt werden soll, wenn sich z.B. der Inhalt einer Tabelle geändert hat. Die Doku meint dazu:
und das klingt mir zumindest doch nach dem, was der Fragesteller sucht.Code:When NOTIFY is used to signal the occurrence of changes to a particular table, a useful programming technique is to put the NOTIFY in a rule that is triggered by table updates. In this way, notification happens automatically when the table is changed, ...
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Wenn du nur Änderungen an Tabellen verfolgen willst, dann ist LISTEN/NOTIFY der gängige Weg, ja.
Ich hatte das als "Systemevents" interpretiert und dafür gibt es (leider) nichts.
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
Ja, Listen/Notify ist genau das was ich gesucht habe.
Jetzt kann ich endlich ohne dauerndes Pollen wissen was zu verarbeitende
Daten in den Tabellen sind und mein Programm weiß wann es aktiv
werden soll. Jetzt ist natürlich nur noch die Frage wie das Clientprogramm
die Nachricht erhält, z.B als Exception. Wäre ja doof wenn ich statt der
Polls auf die Tabelle via Select nun dauernd Polls auf eine virtuelle Eventtablle
fahren muss. Ein Event das als Exception reinkommt wäre mir da wesentlich
lieber.
Das wird als Signal auf die aktive Datenbankverbindung gesandt. Allerdings ist es von Anwendung zu Anwendung und von Programmiersprache zu Sprache unterschiedlich, wie das ausgewertet wird.
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