Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Letzte Feldaenderung ermitteln

29 views
Skip to first unread message

Rainer Wahl

unread,
Aug 13, 2009, 11:31:58 AM8/13/09
to
Ich suche gerade einen Anhaltspunkt, um heraus zu finden, wann ein Feld
das letzte mal ver�ndert wurde.

Ich versuche es einmal grafisch aufzudr�seln:

Name Stra�e H.Nr. PLZ Ort qm
Kurt Schmidt Astra�e 1 34564 Aort 230
Otto Stahl Bstra�e 2 29458 Bort 123
.
.
.

So sieht die Tabelle vom Prinzip her aus. Aus der Tabelle lasse ich mir
nun alle Daten eines Feldes ausgeben und anzeigen.

Name qm
Kurt Schmidt 230
Otto Stahl 123
.
.
.

�ber dieser Tabelle m�chte ich mir nun ausgeben lassen, auf welchem
Stand die Daten im Feld "qm" sind. Also:

Stand vom 12.08.09
Name qm
Kurt Schmidt 230
Otto Stahl 123
.
.
.

D.h. jedesmal wenn Daten im Feld qm ge�ndert werden, soll die Datenbank
mir sagen, wann das war, um zu erfahren, auf welchem Stand die Daten
sind. Ich m�chte nicht wissen, wann zuletzt die Datenbank ge�ndert
wurde, sondern nur beim Feld qm.

Bietet mir SQL hier eine Funktion an oder mu� ich selber wirbeln? Wenn
letzteres, k�nnte mir jemand einen Schubs in die richtige Richtung
geben? Danke.


-=( Rainer )=-

--
Airbrush FAQ: http://www.r-wahl.de/airbrush/faq.php
Baubericht ME-109 RC-Flugmodell:
http://www.r-wahl.de/modellbau/me-109/me-109.php

Christian Kirsch

unread,
Aug 13, 2009, 12:28:36 PM8/13/09
to
Rainer Wahl schrieb:

> ï¿œber dieser Tabelle mï¿œchte ich mir nun ausgeben lassen, auf welchem

> Stand die Daten im Feld "qm" sind. Also:
>
> Stand vom 12.08.09
> Name qm
> Kurt Schmidt 230
> Otto Stahl 123
> .
> .
> .
>

> D.h. jedesmal wenn Daten im Feld qm geï¿œndert werden, soll die Datenbank

> mir sagen, wann das war, um zu erfahren, auf welchem Stand die Daten

> sind. Ich mï¿œchte nicht wissen, wann zuletzt die Datenbank geï¿œndert

> wurde, sondern nur beim Feld qm.
>

> Bietet mir SQL hier eine Funktion an oder muᅵ ich selber wirbeln? Wenn
> letzteres, kï¿œnnte mir jemand einen Schubs in die richtige Richtung
> geben? Danke.

TIMESTAMP in Verbindung mit einem INSERT- und einem UPDATE-Trigger?

Edvin Pehlivanovic

unread,
Aug 13, 2009, 12:34:21 PM8/13/09
to
Rainer Wahl wrote:
> D.h. jedesmal wenn Daten im Feld qm geändert werden, soll die Datenbank
> mir sagen, wann das war, um zu erfahren, auf welchem Stand die Daten
> sind. Ich möchte nicht wissen, wann zuletzt die Datenbank geändert
> wurde, sondern nur beim Feld qm.

Das wird so wohl nicht geben. Zumindest ist es mir (noch) unbekannt.

> Bietet mir SQL hier eine Funktion an oder muß ich selber wirbeln? Wenn
> letzteres, könnte mir jemand einen Schubs in die richtige Richtung
> geben? Danke.

'Einfach' ein Feld hinzufügen, den Typ DATETIME oder DATE wählen und bei
einer Änderung des Feldes qm dieses Feld auf NOW() setzen.

Wenn Du TIMESPAMP als Typ wählst, dann schau Dir bitte die Doku genauer
an. Wenn ich mich recht erinnere wird das erste Timestamp Feld bei einer
Datensatzänderung automatisch neu gesetzt, wenn nichts anderes angegeben
wurde. In deinem Fall nicht das Richtige, denn dich interessiert nur die
Änderung von qm und nicht eines beliebigen Feldes.

LG,
Edvin

Claus Reibenstein

unread,
Aug 13, 2009, 12:42:06 PM8/13/09
to
Edvin Pehlivanovic schrieb:

> Rainer Wahl wrote:
>
>> D.h. jedesmal wenn Daten im Feld qm ge�ndert werden, soll die Datenbank
>> mir sagen, wann das war, [...]


>
> Das wird so wohl nicht geben. Zumindest ist es mir (noch) unbekannt.

Die Datenbank f�hrt von sich aus meines Wissens keinerlei Protokoll
dar�ber, wann welche Daten ge�ndert wurden. Zumindest keins, welches man
als Normal-User abfragen k�nnte.

>> Bietet mir SQL hier eine Funktion an oder mu� ich selber wirbeln? Wenn
>> letzteres, k�nnte mir jemand einen Schubs in die richtige Richtung
>> geben? Danke.
>
> 'Einfach' ein Feld hinzuf�gen, den Typ DATETIME oder DATE w�hlen und bei
> einer �nderung des Feldes qm dieses Feld auf NOW() setzen.

Und nach der Abfrage wieder l�schen.

Gru�. Claus

Rainer Wahl

unread,
Aug 14, 2009, 9:25:50 AM8/14/09
to
Edvin Pehlivanovic schrieb am 13 Aug 2009:

> 'Einfach' ein Feld hinzuf�gen, den Typ DATETIME oder DATE w�hlen

> und bei einer �nderung des Feldes qm dieses Feld auf NOW() setzen. [...]

Zuerst einmal Danke an dich, Christian und Claus f�r die Antworten.

So �hnlich dachte ich mir das schon, da� ich da selber etwas basteln
mu�. Ist aber auch nicht so wild. Ich merke mir dann eben mit PHP den
Wert des Feldes beim auslesen, lasse den Benutzer den Datensatz
bearbeiten und sehe im Abschlu� dann nochmal in das Feld rein. Ist der
Wert dann ein anderer als vorher, wird das Datum aktualisiert und
fertig ist die Laube.

Aber besser man fragt vorher noch einmal nach, ob es nicht schon etwas
fertiges gibt, bevor man sich unn�tig Arbeit und Kopfzerbrechen macht.
SQL ist ja nicht mein t�glich Brot.

Philip Schröder

unread,
Aug 14, 2009, 4:52:56 PM8/14/09
to
Rainer Wahl wrote:

> So ähnlich dachte ich mir das schon, daß ich da selber etwas basteln
> muß. Ist aber auch nicht so wild. Ich merke mir dann eben mit PHP den


> Wert des Feldes beim auslesen, lasse den Benutzer den Datensatz

> bearbeiten und sehe im Abschluß dann nochmal in das Feld rein. Ist der


> Wert dann ein anderer als vorher, wird das Datum aktualisiert und
> fertig ist die Laube.

Das mach MySQL für dich: Das lässt Dich wissen, ob ein Update unnötig wäre, da
die Werte so in der Datenbank stehen:
"UPDATE gibt die Anzahl der tatsächlich geänderten Datensätze zurück"

In diesem Sinne

Viel Erfolg!

Philip

Philip Schröder

unread,
Aug 14, 2009, 4:58:34 PM8/14/09
to

Also klarer Ausgedrückt: Einfach immer den Datensatz zurückschreiben.
Falls der DS so schon in der Tabelle vorliegt (also nicht geändert wurde),
macht MySQL auch kein Update (und somit ändert sich auch nicht der Timestamp
deiner Timestamp-Spalte).

Dominik Echterbruch

unread,
Aug 15, 2009, 6:13:50 AM8/15/09
to
Philip Schröder wrote:
>
>> Ist der
>> Wert dann ein anderer als vorher, wird das Datum aktualisiert und
>> fertig ist die Laube.
>
> Das mach MySQL für dich: Das lässt Dich wissen, ob ein Update unnötig wäre, da
> die Werte so in der Datenbank stehen:
> "UPDATE gibt die Anzahl der tatsächlich geänderten Datensätze zurück"

Womit sich die Benutzer gegenseitig ungewarnt überschreiben. Wenn das
gewünscht wäre, müsste man den Zeitpunkt der Änderung ja nicht verfolgen.
Ich verstehe den OP so, dass er eine Meldung ausgeben möchte, wenn der
Datensatz seit dem Auslesen durch jemand anderen verändert wurde, um
keine Daten zu verlieren, wenn zwei Leute gleichzeitig dran arbeiten.

Grüße,
Dominik
--
Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und niemand
ginge, um einmal zu schauen, wohin man käme, wenn man ginge.
Autor: Kurt Marti (http://de.wikiquote.org/wiki/Kurt_Marti)

Rainer Wahl

unread,
Aug 15, 2009, 9:55:05 AM8/15/09
to
Dominik Echterbruch schrieb am 15 Aug 2009:

> verfolgen. Ich verstehe den OP so, dass er eine Meldung ausgeben

> m�chte, wenn der Datensatz seit dem Auslesen durch jemand anderen
> ver�ndert wurde, um keine Daten zu verlieren, wenn zwei Leute
> gleichzeitig dran arbeiten.

Nein, es geht einfach nur um das, was ich geschrieben habe. :-)
Es soll ein quasi Versionshinweis �ber der Tabelle stehen, damit jeder
Benutzer wei�, wann er z.B. seine ausgedruckte Tabelle mit den Daten in
den M�ll werfen kann, weil es mittlerweile �nderungen an den
relevanten Daten gab.

0 new messages