Datum der letzten Änderung einer Tabelle [erledigt]
Moderator: Moderatoren
- Klaus Schuster
- Foren-Administrator
- Beiträge: 367
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 9 Mal
Datum der letzten Änderung einer Tabelle [erledigt]
Moin Leute,
kennt jemand eine Möglichkeit herauszufinden wann eine Tabelle in postGreSQL zuletzt geändert wurde?
kennt jemand eine Möglichkeit herauszufinden wann eine Tabelle in postGreSQL zuletzt geändert wurde?
Zuletzt geändert von Klaus Schuster am Fr, 24. Apr 2020 14:18, insgesamt 1-mal geändert.
Gruß Klaus
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Datum der letzten Änderung einer Tabelle
Hallo Klaus
ja die gibt es.
Als erstes prüfen dass in deiner postgresql.conf Datei die Zeile
Aktiviert ist. Wenn nein --> ändern und Server Neu Starten
Nur wenn dieser Eintrag auf ON ist werden Timestamps gesammelt und können auch abgefragt werden.
Die Abfrage geht mit:
ja die gibt es.
Als erstes prüfen dass in deiner postgresql.conf Datei die Zeile
Code: Alles auswählen
track_commit_timestamp = on # collect timestamp of transaction commit
# (change requires restart)
Nur wenn dieser Eintrag auf ON ist werden Timestamps gesammelt und können auch abgefragt werden.
Die Abfrage geht mit:
Code: Alles auswählen
SELECT pg_xact_commit_timestamp(xmin), * FROM TABELLEN_NAME where pg_xact_commit_timestamp(xmin) is not null ORDER BY pg_xact_commit_timestamp DESC LIMIT 1;
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Klaus Schuster
- Foren-Administrator
- Beiträge: 367
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 9 Mal
Re: Datum der letzten Änderung einer Tabelle
Danke Carlo, funktioniert nach einem Neustart des Rechners super! Den PgAdmin allein neu zu starten hat nicht ausgereicht.
Gruß Klaus
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Datum der letzten Änderung einer Tabelle [erledigt]
PG-Dienst Neustart hätte gereicht.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Klaus Schuster
- Foren-Administrator
- Beiträge: 367
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 9 Mal
Re: Datum der letzten Änderung einer Tabelle [erledigt]
Ja Werner, muss ich den über die Dienste starten, oder gibt es dafür eine Möglichkeit im PgAdmin?
Anbei zwei Methoden um die letzte Änderung eines Datensatzes oder einer Tabelle abfragen zu können.
Beispiel für Änderungszeitpunk eines Datensatz:
cTimeStampLetzteAenderung := ::oSession:LetzteAenderungSatz( 'anreden', 'anr_id = 1' )
Anbei zwei Methoden um die letzte Änderung eines Datensatzes oder einer Tabelle abfragen zu können.
Code: Alles auswählen
METHOD SQL:LetzteAenderungSatz( cTabelle, cSatz )
LOCAL aLetzteAenderung := ::Select_Array( "SELECT pg_xact_commit_timestamp(xmin) FROM " + cTabelle + " WHERE " + cSatz + " AND pg_xact_commit_timestamp(xmin) IS NOT NULL ORDER BY pg_xact_commit_timestamp DESC LIMIT 1" )
RETURN( IIf( IsArray( aLetzteAenderung ), aLetzteAenderung[1][1], NIL ))
METHOD SQL:LetzteAenderungTabelle( cTabelle )
LOCAL aLetzteAenderung := ::Select_Array( "SELECT pg_xact_commit_timestamp(xmin) FROM " + cTabelle + " WHERE pg_xact_commit_timestamp(xmin) IS NOT NULL ORDER BY pg_xact_commit_timestamp DESC LIMIT 1" )
RETURN( IIf( IsArray( aLetzteAenderung ), aLetzteAenderung[1][1], NIL ))
cTimeStampLetzteAenderung := ::oSession:LetzteAenderungSatz( 'anreden', 'anr_id = 1' )
Gruß Klaus
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: Datum der letzten Änderung einer Tabelle [erledigt]
Hallo Klaus !
netstopPG10.bat:
sc stop postgresql-x64-10
sc stop pgAgent
sc stop pgbouncer
und starten mit netstartPG10.bat:
sc start pgbouncer
sc start pgAgent
sc start postgresql-x64-10
Ich mach das bei allen SQL-Servern immer über Batch-Files:Ja Werner, muss ich den über die Dienste starten, oder gibt es ...
netstopPG10.bat:
sc stop postgresql-x64-10
sc stop pgAgent
sc stop pgbouncer
und starten mit netstartPG10.bat:
sc start pgbouncer
sc start pgAgent
sc start postgresql-x64-10
--
Hans-Peter
Hans-Peter
- Klaus Schuster
- Foren-Administrator
- Beiträge: 367
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 9 Mal
- Klaus Schuster
- Foren-Administrator
- Beiträge: 367
- Registriert: Do, 24. Jan 2008 10:01
- Wohnort: 90762 Fürth
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 9 Mal
Re: Datum der letzten Änderung einer Tabelle [erledigt]
Erkenntnis: Dadurch das es möglich ist die letzten Änderung eines Datensatz abfragen zu können, kann man sich ein entsprechendes TimeStamp-Feld in der Tabelle sparen.
Gruß Klaus
- Marcus Herz
- 1000 working lines a day
- Beiträge: 852
- Registriert: Mo, 16. Jan 2006 8:13
- Wohnort: Allgäu
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 192 Mal
- Kontaktdaten:
Re: Datum der letzten Änderung einer Tabelle [erledigt]
Hi
Ich bin mir nicht sicher, ob du durch die Aktivierung der Transactions Timestamp nicht einen internen Overhaed erzeugst.
Laut Doku ist für deinen Fall eine Spalte timestamp jedenfalls performanter.
Ich bin mir nicht sicher, ob du durch die Aktivierung der Transactions Timestamp nicht einen internen Overhaed erzeugst.
Laut Doku ist für deinen Fall eine Spalte timestamp jedenfalls performanter.
Gruß Marcus
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Erkenne, was du findest, dann weißt du, wonach du gesucht hast
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Datum der letzten Änderung einer Tabelle [erledigt]
Ja: Rechtsklick auf den Server und dann Reload Configuration. Dazu gibt's auch eine PG-Funktion: pg_reload_conf() - alsoKlaus Schuster hat geschrieben: ↑Fr, 24. Apr 2020 15:00 Ja Werner, muss ich den über die Dienste starten, oder gibt es dafür eine Möglichkeit im PGAdmin?
Code: Alles auswählen
select pg_reload_conf()
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2513
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Datum der letzten Änderung einer Tabelle [erledigt]
Hallo Werner
Nein.
Reicht dazu nicht aus. Es muss ein Neustart des Services/Servers sein. Wie es auch in der conf steht "# (change requires restart)" Nur so werden einige der möglichen änderungen in der postgresql.conf auch ausgeführt.
z.B. mit:
(FreeBSD)
Oder vergleichbares unter Windows
Nein.
Code: Alles auswählen
select pg_reload_conf()
z.B. mit:
Code: Alles auswählen
service postgresql restart
Oder vergleichbares unter Windows
Valar Morghulis
Gruss Carlo
Gruss Carlo