AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MariaDB: Event bei neuem Datensatz
Thema durchsuchen
Ansicht
Themen-Optionen

MariaDB: Event bei neuem Datensatz

Ein Thema von Helmi · begonnen am 4. Sep 2025 · letzter Beitrag vom 5. Sep 2025
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.355 Beiträge
 
Delphi XE2 Professional
 
#1

AW: MariaDB: Event bei neuem Datensatz

  Alt 4. Sep 2025, 15:46
der ESP schreibt gemütlich in die Datenbank rein
ein Delphi-Programm holt sich die Daten und zeigt sie grafisch an
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
657 Beiträge
 
Delphi XE6 Enterprise
 
#2

AW: MariaDB: Event bei neuem Datensatz

  Alt 4. Sep 2025, 15:55
Dann wird das wohl auf Polling hinauslaufen. Das Delphi Prg schaut regelmäßig nach, obs was neues gibt.
  Mit Zitat antworten Zitat
DaCoda

Registriert seit: 21. Jul 2006
Ort: Hamburg
199 Beiträge
 
Delphi 12 Athens
 
#3

AW: MariaDB: Event bei neuem Datensatz

  Alt 5. Sep 2025, 07:03
Ich mache das bei MariaDB mit einem Trigger, wenn es neue Daten gibt, oder etwas verändert wurrde und setze dann ein Flag. Das Delphi Programm schaut zyklisch auf das Flag und reagiert entsprechend.
Debuggers don’t remove bugs, they only show them in slow-motion.
  Mit Zitat antworten Zitat
DaCoda

Registriert seit: 21. Jul 2006
Ort: Hamburg
199 Beiträge
 
Delphi 12 Athens
 
#4

AW: MariaDB: Event bei neuem Datensatz

  Alt 5. Sep 2025, 07:11
Oder wenn du es ganz simpel machen möchtest, dann vielleicht so in der Art:

Code:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  FDQuery1.SQL.Text := 'SELECT MAX(last_modified) FROM deine_tabelle';
  FDQuery1.Open;
  if FDQuery1.Fields[0].AsDateTime > LetzterZeitstempel then
  begin
    // Änderung erkannt – aktualisiere Anzeige
    LetzterZeitstempel := FDQuery1.Fields[0].AsDateTime;
    AktualisiereDaten();
  end;
end;
Debuggers don’t remove bugs, they only show them in slow-motion.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.355 Beiträge
 
Delphi XE2 Professional
 
#5

AW: MariaDB: Event bei neuem Datensatz

  Alt 5. Sep 2025, 07:17
Ich mache das bei MariaDB mit einem Trigger, wenn es neue Daten gibt, oder etwas verändert wurrde und setze dann ein Flag. Das Delphi Programm schaut zyklisch auf das Flag und reagiert entsprechend.
das hört sich sehr interessant an

Hättest du hierfür vielleicht ein Beispiel?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
DaCoda

Registriert seit: 21. Jul 2006
Ort: Hamburg
199 Beiträge
 
Delphi 12 Athens
 
#6

AW: MariaDB: Event bei neuem Datensatz

  Alt 5. Sep 2025, 07:42
Ja das machst du in etwa so:

Die zusätzliche Log-Table:
Code:
CREATE TABLE table_log (
  id INT AUTO_INCREMENT PRIMARY KEY,
  aktion VARCHAR(10),          -- z.&#8239;B. 'INSERT', 'UPDATE', 'DELETE'
  zeitpunkt DATETIME DEFAULT NOW()
);
Die TRIGGER:
Code:
-- INSERT Trigger
CREATE TRIGGER table_insert AFTER INSERT ON kunden
FOR EACH ROW
BEGIN
  INSERT INTO table_log (aktion, zeitpunkt) VALUES ('INSERT', NOW());
END;

-- UPDATE Trigger
CREATE TRIGGER table_update AFTER UPDATE ON kunden
FOR EACH ROW
BEGIN
  INSERT INTO lable_log (aktion, zeitpunkt) VALUES ('UPDATE', NOW());
END;

-- DELETE Trigger
CREATE TRIGGER kunden_delete AFTER DELETE ON kunden
FOR EACH ROW
BEGIN
  INSERT INTO table_log (aktion, zeitpunkt) VALUES ('DELETE', NOW());
END;
Abfrage der Einträge in Delphi:
Code:
FDQuery.SQL.Text := 'SELECT * FROM table_log ORDER BY zeitpunkt DESC';
FDQuery.Open;
Und entfernen der Einträge in Delphi:
Code:
FDQuery.SQL.Text := 'DELETE FROM table_log';
FDQuery.ExecSQL;
Das musst du entsprechend deiner Anforderung etwas anpassen, aber grundsätzlich ginge das so.
Debuggers don’t remove bugs, they only show them in slow-motion.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.355 Beiträge
 
Delphi XE2 Professional
 
#7

AW: MariaDB: Event bei neuem Datensatz

  Alt 5. Sep 2025, 08:07
Ja das machst du in etwa so:

Abfrage der Einträge in Delphi:
Code:
FDQuery.SQL.Text := 'SELECT * FROM table_log ORDER BY zeitpunkt DESC';
FDQuery.Open;
Und entfernen der Einträge in Delphi:
Code:
FDQuery.SQL.Text := 'DELETE FROM table_log';
FDQuery.ExecSQL;
Das musst du entsprechend deiner Anforderung etwas anpassen, aber grundsätzlich ginge das so.
schaut interessant aus - werd ich ausprobieren
Im Delphi-Programm schaust du dann, ob Daten aus der table_log vorhanden sind?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
DaCoda

Registriert seit: 21. Jul 2006
Ort: Hamburg
199 Beiträge
 
Delphi 12 Athens
 
#8

AW: MariaDB: Event bei neuem Datensatz

  Alt 5. Sep 2025, 08:20
schaut interessant aus - werd ich ausprobieren
Im Delphi-Programm schaust du dann, ob Daten aus der table_log vorhanden sind?
Ja genau mit den beiden Querys behandel ich das, eine zum feststellen, ob es Änderungen gab und die Andere zum löschen der Einträge.

Es gibt sicher noch weitere Möglichkeiten. Wenn du volle Change Notification-Unterstützung brauchst, wäre ein Wechsel zu z. B. InterBase oder Oracle eine Überlegung wert – dort funktioniert das direkt über FireDAC
Debuggers don’t remove bugs, they only show them in slow-motion.
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz