[gelöst] SQL DB Create/Update logging

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

[gelöst] SQL DB Create/Update logging

Beitrag von charlytango »

Hi,

weil af0815 hier
af0815 hat geschrieben:
Di 11. Okt 2022, 19:27
Wenn du weisst welcher der beiden Datensätze jünger ist....
eine Schwachstelle meines DB-Designs aufgedeckt hat (Asche auf mein Haupt dass ich zwar dran gedacht habe aber die Automatisierung eines created und updated Timestamps verschlampt habe) schiebe ich gleich noch eine Frage hinterher.

Die Thematik eines create- oder update-logs ist jetzt nicht neu.
Für nicht SQL oder Datenbank-affine Leser: damit meint man mitprotokollieren von Erstell- oder Änderungsvorgängen in der Datenbank um sie einerseits mitzuloggen (user: "Ich hab gar nix getan") bzw andererseits auch ggf Rückschritte zu ermöglichen.
Dazu gibt es auch unterschiedliche Ansätze.

ZB einen Vorher-Datensatz komplett zu speichern oder kleinteiliger jede einzelne Änderung in einer oder mehreren Tabellen speichern. Ist also ein ziemlicher Aufwand.
Aber das Prinzip ist immer das gleiche und auch unabhängig von den gespeicherten Daten.
Eigentlich eine typische Aufgabe die die Datenbank ja selbständig ausführen könnte.

Meine Frage: Existiert bei MariaDB irgend eine Funktion des direkten Loggings in Tabellen auf die man auch zugreifen kann?

Oder löst ihr das über Trigger?
Oder quasi manuell aus der Applikation ?

Es scheint etwas wie ein binary log zu existieren, das ist aber recht unbrauchbar
Zuletzt geändert von charlytango am Mi 12. Okt 2022, 10:17, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: SQL DB Create/Update logging

Beitrag von af0815 »

Für das erstellen reicht bei MS Sql ein einfacher default constrain. Ansonsten manuell oder per Trigger. Bei etlichen Sachen, kann man dem Benutzer sowieso ein von XY am xxx geändert oder nur das Datum anzeigen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: SQL DB Create/Update logging

Beitrag von charlytango »

Für das einfache Datum ist das noch kein Problem:

Code: Alles auswählen

CREATE TABLE `XY` (
.....
	`created` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'created timestamp',	
	`updated_at` DATETIME NULL ON UPDATE NOW()  COMMENT 'updated timestamp',
.....
)
Spannend wird es erst wenn man loggen möchte WER, WAS, WANN geändert hat.

zb User Hugo ändert am xxx das Feld 'Name' von 'Meier' auf 'Müller'

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: SQL DB Create/Update logging

Beitrag von charlytango »

es gibt da tatsächlich bei MariaDB so eine Funktion die das macht die system-versioned-tables heißt
Muss ich mir mal genauer ansehen

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: SQL DB Create/Update logging

Beitrag von af0815 »

Die Frage ist - ist es relevant ? und lohnt sich der Aufwand ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: SQL DB Create/Update logging

Beitrag von charlytango »

wohl nicht --- Die richtige Frage zur richtigen Zeit - THX

Antworten