AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankänderungen mitteilen
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankänderungen mitteilen

Ein Thema von Nico80 · begonnen am 28. Jun 2007 · letzter Beitrag vom 28. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2      
Nico80

Registriert seit: 28. Jun 2007
63 Beiträge
 
Delphi 2006 Enterprise
 
#1

Datenbankänderungen mitteilen

  Alt 28. Jun 2007, 12:22
Datenbank: Interbase • Version: 7.1 • Zugriff über: InterBase Express (IBX)
Hallo,
ich habe eine allgemeine Frage zu Datenbanken und suche nach Lösungen oder Informationsquellen.

Ich arbeite mit einer Datenbank und mehreren Anwendungen, die auf diese DB zugreifen.
Für den Zugriff auf die DB habe ich ein Geschäftsobjekt-Modell entwickelt, in der die DB-Zugriffe gekapselt werden.
Nun möchte ich einen Aktualisierungs-Mechanismus entwickeln. D.h. falls eine Anwendung eine Änderung in der DB vornimmt,
sollen alle anderen Anwendungen darüber informiert werden und sich selbst aktualisieren.
Bei Interbase und Firebird gibt es spezielle Events, die ausgelöst werden können. Gibt es noch andere Möglichkeiten?

Für Informationen oder Lösungsansätze wäre ich sehr dankbar.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.613 Beiträge
 
#2

Re: Datenbankänderungen mitteilen

  Alt 28. Jun 2007, 12:25
Hrm. Da alle Clients um miteinaner zu kommunizieren eh im gleichen Netz sind würde ein UDP-Broadcast (Tabellenname) schon ausreichen. Das ein Paket im LAN verloren geht ist recht unwahrscheinlich.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Datenbankänderungen mitteilen

  Alt 28. Jun 2007, 12:25
Gleiche Frage, gleiche Antwort:
Ja du kannst einen Event/Alert erzeuge, auf welcher dann von den Clients regiert werden kann.
Markus Kinzler
  Mit Zitat antworten Zitat
Nico80

Registriert seit: 28. Jun 2007
63 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Datenbankänderungen mitteilen

  Alt 28. Jun 2007, 13:23
Zitat von mkinzler:
Gleiche Frage, gleiche Antwort:
Ja du kannst einen Event/Alert erzeuge, auf welcher dann von den Clients regiert werden kann.
Wenn ich aber eine globale Transaktion benutze, in denen mehrere Tabellen bearbeitet werden, muss ich die Events erst erzeugen,
wenn die Transaktionen commitet werden. D.h. ich muss mir merken, was ich innerhalb einer Transaktion mache. Ist das zu kompliziert gedacht.
Kennt jemand ein Beispiel im netz? Bin ja wohl nicht der erste der sich mit dem Thema beschäftigt?!
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#5

Re: Datenbankänderungen mitteilen

  Alt 28. Jun 2007, 14:01
Zitat von Nico80:
Wenn ich aber eine globale Transaktion benutze, in denen mehrere Tabellen bearbeitet werden, muss ich die Events erst erzeugen,
wenn die Transaktionen commitet werden. D.h. ich muss mir merken, was ich innerhalb einer Transaktion mache. Ist das zu kompliziert gedacht.
Kennt jemand ein Beispiel im netz? Bin ja wohl nicht der erste der sich mit dem Thema beschäftigt?!
POST_EVENT aktiviert man z.B. im After-INSERT|UPDATE|DELETE-Trigger der jeweiligen Tabelle.
Diese Events werden aber erst NACH einem Commit ausgelöst.
Du mußt die also darum keine Gedanken machen.

SQL-Code:
CREATE TRIGGER AUFTRAG_AIUD0 FOR AUFTRAG
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
begin
  if (INSERTING) then POST_EVENT 'AUFTRAG_INSERT';
  if (UPDATING) then POST_EVENT 'AUFTRAG_UPDATE';
  if (DELETING) then POST_EVENT 'AUFTRAG_DELETE';
end
alex
Alexander
  Mit Zitat antworten Zitat
Nico80

Registriert seit: 28. Jun 2007
63 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: Datenbankänderungen mitteilen

  Alt 28. Jun 2007, 14:04
Zitat von alex517:
Zitat von Nico80:
Wenn ich aber eine globale Transaktion benutze, in denen mehrere Tabellen bearbeitet werden, muss ich die Events erst erzeugen,
wenn die Transaktionen commitet werden. D.h. ich muss mir merken, was ich innerhalb einer Transaktion mache. Ist das zu kompliziert gedacht.
Kennt jemand ein Beispiel im netz? Bin ja wohl nicht der erste der sich mit dem Thema beschäftigt?!
POST_EVENT aktiviert man z.B. im After-INSERT|UPDATE|DELETE-Trigger der jeweiligen Tabelle.
Diese Events werden aber erst NACH einem Commit ausgelöst.
Du mußt die also darum keine Gedanken machen.

SQL-Code:
CREATE TRIGGER AUFTRAG_AIUD0 FOR AUFTRAG
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
begin
  if (INSERTING) then POST_EVENT 'AUFTRAG_INSERT';
  if (UPDATING) then POST_EVENT 'AUFTRAG_UPDATE';
  if (DELETING) then POST_EVENT 'AUFTRAG_DELETE';
end
alex
Das ist aber wiederum Inerbase/Firebird abhängig. Außerdem habe ich hier den Nachteil,
dass ich nicht genau weiß welcher Datensatz sich geändert hat bzw. sogar gelöscht wurde.
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#7

Re: Datenbankänderungen mitteilen

  Alt 28. Jun 2007, 15:59
Zitat von Nico80:
Das ist aber wiederum Inerbase/Firebird abhängig.
Das ist richtig, du hast ja auch Interbase als benutzte Datenbank angegeben.

Zitat von Nico80:
Außerdem habe ich hier den Nachteil, dass ich nicht genau weiß welcher Datensatz sich geändert hat bzw. sogar gelöscht wurde.
Das ist auch richtig. Es können keine veränderlichen Parameter beim Event angegeben werden, da
auf der Clientseite auf die Eventbezeichung z.B. 'AUFTRAG_INSERT' reagiert wird.
Es war zwar schon mal angedacht, bei Events Parameter anzugeben (Quelle: MIR INTERBASE),
wurde aber (vorerst?) wieder fallengelassen.

alex
Alexander
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Datenbankänderungen mitteilen

  Alt 28. Jun 2007, 16:21
sagt mal, gibts sowas zufällig auch für MSSQL?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#9

Re: Datenbankänderungen mitteilen

  Alt 28. Jun 2007, 19:11
Zitat von alzaimar:
sagt mal, gibts sowas zufällig auch für MSSQL?
MSSQL was soll'n das sein??


Die Beiträge sind schon etwas älter, vielleicht ist ja MS inzwischen ein Stück weiter gekommen:
Event1
Event2

[Laestermodus]
MS-SQL soll ja jetzt sogar Versioning können, sind wohl mit Ihrer alten Transaktionskontrolle an Grenzen gestoßen?
delphipraxis
[/Laestermodus]

Edit:
eventuell wirst du hier fündig. Ich hab nicht so die Ahnung von MSSQL.

alex
Alexander
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Datenbankänderungen mitteilen

  Alt 28. Jun 2007, 19:21
also, wenn wir schon so komich am fragen sind,

gibts so was zufällig auch für MySQL und die alte FlashFiler DB?

Gruß oki
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz