Event Trigger

Kampfgummibaerlie

Datenbank-Guru
Beiträge
734
Nachdem ich (wie immer) am Abend hart am weiterkommen bin, dachte ich mir, dass ich eine Art "Chat" erstellen könnte. Nachdem das mit Authentifizierung des Users, und so weiter, bisher schon ganz gut funktioniert, würde mir jetzt kommen, wo ich nach bisherigen regergen draufgekommen bin, dass ein Event-Trigger hier die Lösung sein könnte.

Mein Anliegen wäre, dass:
1.: Benutzer AFK gesetzt werden, wenn sie lange genug nix schreiben
2.: Benutzer rausgeschmissen werden, wenn sie wirklch lange nix mehr schreiben

Kann man einem Event-Trigger auch irgendwie einen Zündungs-Grund geben, welcher wiederum einem Interval entspricht?
 
Werbung:
Dazu wäre eine Art "CRON" in PG nötig.

Es gibt wohl einige Projekte, die eine Art "CRON" in PG realisieren wollen. In-Core und auch in Contrib ist davon noch nix angekommen. Das hat aber (IMHO) nix mit einem EVENT-TRIGER zu tun. Andere Baustelle.
 
kurz und bündig:

kannst du mir heute abend die event trigger noch ein wenig näher bringen?
Was damit möglich wäre, oder eben auch nicht (wie in diesem Fall), und, wie man sie im absolutem schreibt? (dass sie einen event_trigger returnen müssen, weiß ich ;) )

Danke, auch wenn nix aus der Unterrichtsstunde für heute Abend wird :D
 
Event Trigger sind, wie der Name es sagt, für bestimmte Events gedacht. Damit ist NICHT mein Geburtstag gemeint, sondern insbesondere DDL-Befehle wie CREATE TABLE, ALTER TABLE etc. Diese Ereignisse verändern etwas in systeminternen Tabellen (Katalogen). Das ist mehr so eine "Infrastruktur"-Sache, z.B. für logical replication oder Auditing. Ich glaube nicht, daß Du derzeit einen sinnvollen use-case dafür hast ...
 
Danke für die schnelle Erklärung, und Annahme für meinen Fall :D

Also werde ich mich noch ein wenig (wo ich zwar denke, ich blicks durch, aber glaube, noch ncht alles zu wissen) mit normalen Triggern beschäftigen!
 
Sodala, ich hoffe, ich darf es hier offiziell sagen, ich bastel an der Datenbank und der Homepage für meine WoW-Gilde
Die kuhle Herde

wäre die entsprechende Domain, an der ich ein wenig bastel, um an Erfahrung zu gewinnen.
Ich wäre jetzt wieder beim Event-Trigger, wo ich mir ziemlich sicher bin, dass ich hier einen einsetzen muss.

Ich würde gerne einen Event-Trigger erstellen, welcher sich zündet, wenn eine weitere Tabelle erstellt wird, und den Namen der neu erstellten Tabelle in die Tabelle "Tabellen" wiederum einfügt.

Um das zu erklären:
Ich habe eine Liste an Tabellen, und weiß aber nicht, in wiefern ich "jetzt" bereits fertig wäre, und ich mache das zurzeit so, dass ich den einzelnen "Nutzern" auch "Rechte" gebe, und derjenige auf der Homepage (links) mehr oder weniger Links angezeigt bekommt. (Nämlich nur die, auf die er auch zugriff hat).

Problem hier wäre:
Ich würde gerne (eben beim erstellen einer Tabelle), den Tabellennamen gerne in die Tabelle "Tabellen" einfügen, und sicherheitshalber ersteinmal nur für "mich", bis ich die rechte, die ich als integer definiert habe, geändert habe. Ich denke, dass ich auch selbst dahinterkommen kann, aber weil ich denke, es auch andere interessiert, und Mr. Elephant immer gerne hilft, und der Allgemeinheit helfen möchte (stimmts?), frage ich hier ;)

Kommentar am Ende:
Seit ich mich umfangreicher mit dem programmieren beschäftige, bin ich glücklicher. Klingt unter Umständen komisch, aber dem ist so, ich komme nach und nach auf Neues, ich komme nach und nach auf neue Sprachen, und was weiß ich was. Andi, ich bedanke mich hiermit bei dir, dass du mich zu PostgreSQL geführt hast, weil ohne dem, wäre ich eben bei meinem "OpenOffice" geblieben, würde mich jetzt wohl noch damit herumplagen, und hätte nie probiert, auch entsprechend eine Homepage zu bauen, weil das ja an sich Offline arbeitet (Kennt man vl. von MS-Access (?))

Jedenfalls, würde ich mich jetzt gerne (sehr motiviert ;) ) näher mit den Event-Triggern beschäftiigen, und meine Fragen auch veröffentlichen, oder hier darüber diskutieren.
 
Also, um meine Situation mit ein paar Codes zu erklären:

1.: Eine Tabelle mit "rechten"
Code:
create table rechte(id serial primary key, name text not null)

2.: Eine Tabelle mit "tabellen"
Code:
create table tabellen(id serial primary key, name text not null, rechte integer references rechte(id) default ('2'))

Ich hoffe, die Codes funktionieren wie sie sind, jetzt nicht auf die schnelle versucht.
jedenfalls, wenn du auf die oben gepostete Homepage gehst, ist links ein Menü mit Links, die wiederum alle auf einzelne Seiten weiterleiten. (Diese sind wiederum die Namen der Tabellen, wo die eingetragenen Rechte immer über 1 sind, wobei ein "Neuling", der nicht registriert ist die Rechte gleich 1 bekommt, sprich an sich nur die Seiten sehen kann, die einen geringereren "Recht-Wert" haben, als den Default-Wert, das sind eben die Teile der Seite, die ich allgemein veröffentlichen möchte.
Warum default gleich 2 ist? Wenn man sich registriert, bekommt man zutritt zu der einen oder anderen weiteren Seite (Plauderecke zum Beispiel), und wenn ich dieser Person die bisherigen Rechte ändere (z.B.: wenn er in der Gilde ist, und mir auch sagt, "setz mich mal von den rechten her höher", dann würde ich das auch tun, wenn dem so ist, mit folgendem Code:

Code:
Update accounts set rechte = '3' where name = 'Name'

Die bisher höchsten "Rechte" habe entsprechend nur ich, was wiederum 5 entspricht, damit eben ich ernsthaft alle Tabellen angezeigt bekomme, und die einzelnen Seiten.
4 wäre für "höhergesetzte", sprich unserem Gildenleader, Raidleader (eine Gruppe an Spielern, die sich etwas stellt, von denen wiederum die "Leitperson"), oder sonstige.

Falls meine Angehensweiße Grundlegend falsch ist, erwarte ich mir jedoch Verbesserungsvorschläge ;)

Ich meine, mir ist bewusst, dass das hier kein PHP-Forum ist, aber ich handle, je nachdem welcher Name sich erfolgreich einloggt, mit den Rechten von diesem Benutzer, die wiederum 1-5 entsprechen, und zeige dementsprechend links im Menü verschiedene Punkte an.

Aber, um hier mal die Funktion zu schreiben, welche wiederum im PHP genutzt wird:
Code:
create function account_rechte(x text) returns integer as 'select rechte from accounts where name = x' language sql;

Wobei die Spalte Name natürlich unique ist ;)
 
Werbung:
Event-Trigger sind eher Infrastruktur, um Features wie logical Replication, Bi-Directional Replication und solchen Krams zu realisieren. Wenn Du in Deiner Datenbank eine neue Tabelle hast, wirst Du Deine Applikation anpassen müssen, damit diese diese neue Tabelle auch nutzt. Das kann Dir ein Event-Trigger nicht abnehmen.
 
Zurück
Oben