Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   DB Eintrag nachvollziehen ? (https://www.delphipraxis.net/152454-db-eintrag-nachvollziehen.html)

khh 23. Jun 2010 11:42

Datenbank: firebird • Version: 2.1 • Zugriff über: ZEOS

DB Eintrag nachvollziehen ?
 
Hallo zusammen,
mein Programm bringt es fertig, in Verbindung mit der Eingabe eines Kunden, eine Satz in eine Tabelle anzulegen , der im Primärschlüssel 0 stehen hat.:-(
Ich kann das weder in meiner Entwicklungsumgebung noch bei einer anderen Installation im Programm nachvollziehen.

Gibts datenbankseitig ne Möglichkeit beim nächsten Auftreten des "Phänomens" nachzuvollziehen woher der Eintrag kommt?


Danke Gruss KHH

mkinzler 23. Jun 2010 11:44

AW: DB Eintrag nachvollziehen ?
 
Indem du einen After Post Trigger auf die Tabelle legst und jede Änderung protokollierst

khh 23. Jun 2010 11:56

AW: DB Eintrag nachvollziehen ?
 
Zitat:

Zitat von mkinzler (Beitrag 1031033)
Indem du einen After Post Trigger auf die Tabelle legst und jede Änderung protokollierst

ähm

hast mir da iregendwo nen codeschnipsel ?

danke dir

mkinzler 23. Jun 2010 12:09

AW: DB Eintrag nachvollziehen ?
 
Für was genau?

khh 23. Jun 2010 12:18

AW: DB Eintrag nachvollziehen ?
 
Zitat:

Zitat von mkinzler (Beitrag 1031039)
Für was genau?

was kann ich denn loggen?

datum uhrzeit
was sonst noch?
EDIT: Das Datum schreibe ich normalerweise immer mit.
Was mich dabei stutzig macht, ist, dass in dem Schrottsatz kein Datum geschrieben wird.

am hilfreichsten wäre wenn ich feststellen könnte, ob ein bereits vorhandener Satz überschrieben wird.

Dann hätte ich einen Ansatzpunkt wo ich suchen könnte.

Hansa 23. Jun 2010 12:18

AW: DB Eintrag nachvollziehen ?
 
Er meint wohl einen AFTER UPDATE Trigger.
SQL-Code:
CREATE TRIGGER ADRESSE_AUO FOR ADRESSE
ACTIVE AFTER UPDATE POSITION 0
AS
BEGIN
  UPDATE ADRESSE SET
    LETZTEAENDERUNG = CURRENT_TIMESTAMP
  WHERE (ID = OLD.ID) AND ((LETZTEAENDERUNG IS NULL) OR
        (LETZTEAENDERUNG <> CURRENT_TIMESTAMP));
END
^
Da wird jetzt der Zeitstempel der letzten Änderung eines Datensatzes protokolliert. Müsste man eben für Spezialfälle anpassen. Soll die DB unberührt bleiben, dann könnte man eventuell in Betracht ziehen, ein After Post Ereignis zu nutzen, sofern Zeos das überhaupt kennt. :shock:

mkinzler 23. Jun 2010 12:37

AW: DB Eintrag nachvollziehen ?
 
Wobei das einfügen eines Timestamps einfacher durch einen Defaultwert zu lösen wäre.
In diesem Fall wäre es besser eine Logdatei oder in eine Logtabelle zu schreiben

Hansa 23. Jun 2010 12:56

AW: DB Eintrag nachvollziehen ?
 
@mkinzler : wie, was, Defaultwert ? :shock:

Der Primärschlüssel wird auf 0 gesetzt und das soll nicht so sein, oder ? Es ist ja wohl ein BI-Trigger vorhanden, der die ID/Primärschlüssel anlegt ? Wäre jedenfalls die erste zu untersuchende Stelle. Lege vielleicht besser eine Exception an, die genau dann ausgeführt wird, wenn der Fall der Fälle eben auftritt. Solche dubiosen Fehler sind schwer aufzufinden. Wenn der Enduser allerdings eine Fehlermeldung präsentiert bekommt und direkt anruft und sagt was er vorher gemacht hat, dann kann man das wohl schnell lokalisieren.

DeddyH 23. Jun 2010 12:58

AW: DB Eintrag nachvollziehen ?
 
Es wäre einmal interessant zu sehen, wie der Insert-Trigger aussieht.

khh 23. Jun 2010 13:18

AW: DB Eintrag nachvollziehen ?
 
Zitat:

Zitat von Hansa (Beitrag 1031042)
Er meint wohl einen AFTER UPDATE Trigger.
SQL-Code:
CREATE TRIGGER ADRESSE_AUO FOR ADRESSE
ACTIVE AFTER UPDATE POSITION 0
AS
BEGIN
  UPDATE ADRESSE SET
    LETZTEAENDERUNG = CURRENT_TIMESTAMP
  WHERE (ID = OLD.ID) AND ((LETZTEAENDERUNG IS NULL) OR
        (LETZTEAENDERUNG <> CURRENT_TIMESTAMP));
END
^
Da wird jetzt der Zeitstempel der letzten Änderung eines Datensatzes protokolliert. Müsste man eben für Spezialfälle anpassen. Soll die DB unberührt bleiben, dann könnte man eventuell in Betracht ziehen, ein After Post Ereignis zu nutzen, sofern Zeos das überhaupt kennt. :shock:

ich danke euch, werd ich so installieren.

Gruss KHH


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr.
Seite 1 von 3  1 23      

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