welche Bedeutung hat das Timestamp-Feld?

11/09/2007 - 13:17 von Klaus-Dieter | Report spam
Ich habe mal irgendwo gelesen, dass der SQL-Server zwingend eine ID
(Schlüssel) und ein Timestamp-Feld bracht. Das mit dem Schlüssel ist auf
jeden Fall richtig (da habe ich schon unangenehme Erfahrungen gemacht). Aber
das Timestamp-Feld? Beim Upsizen von Access auf Access fragt der Assistent,
ob man eins anlegen will, man muss aber nicht.

Wenn man den Namen "Timestamp" wörtlich nimmt, dann wird darin gespeichert,
wann der Datensatz gespeichert oder geàndert wird. Allerdings ich habe
dieses Feld meist angelegt, aber hier ist nie ein Eintrag reingekommen
(jedenfalls nicht von alleine).

Ich muss noch dazu sagen, dass ich ausnahmslos von Access via ODBC auf den
SQL-Server zugreife.

Klaus
 

Lesen sie die antworten

#1 Stefan Hoffmann
11/09/2007 - 14:04 | Warnen spam
hallo,

Klaus-Dieter schrieb:
Ich habe mal irgendwo gelesen, dass der SQL-Server zwingend eine ID
(Schlüssel) und ein Timestamp-Feld bracht.


Das ist so einfach falsch.

Ich muss noch dazu sagen, dass ich ausnahmslos von Access via ODBC auf den
SQL-Server zugreife.


Für den Zugriff auf den SQL Server von Access aus braucht Access/Jet
zwingend die Information über einen Kandidatenschlüssel. Ohnen diesen
und damit auch ohne einen Primàrschlüssel kann Access/Jet keine Daten
einfügen oder àndern.

Das TIMESTAMP-Feld im SQL Server ist ein datenbankweiter,
tabellenübergreifender Änderungszàhler. Der ODBC-Treiber benutzt diesen,
wenn er vorhanden ist, um effizientere Abfragen zur Konflikterkennung an
den Server zustellen.

Du ànderst den Record

ID, Bezeichnung, Bewertung
1, "Stefan", "Toll"

Damit Access/Jet prüft nun vor dem Schreiben, ob die Daten sich nicht
geàndert haben, in dem es folgenden SQL abschickt

SELECT ID, Bezeichnung FROM Tabelle
WHERE ID = 1 AND Bezeichnung = "Stefan" AND Bewertung = "Toll"

Hàtte unsere Tabelle mehrere Felder, würden diese _alle_ mittels AND in
der WHERE-Bedingung aufgeführt.
Ist ein TIMESTAMP Feld und ein Primàrschlüssel vorhanden, so werden nur
die Felder des Primàrschlüssels und der TIMESTAMP Wert abgefragt:

ID (PK), Timestamp, Bezeichnung, Bewertung
1, 1, "Stefan", "Toll"

gibt

WHERE ID = 1 AND Timestamp = 1

Dadurch werden weniger Daten übertragen, was sich in einem "schnelleren"
Antwortverhalten (Latenz) bemerkbar macht.

Die Sache mit dem Primàrschlüssel an sich ist komplizierter:

Nur Access braucht die Information über den Schlüssel.

Bei Verknüpfte Sichten ist Access nicht in der Lage den Primàrschlüssel
zu bestimmen, daher bekommst du einen Dialog um diesen festzulegen. An
dieser Stelle kannst du einen beliebigen Kandidatenschlüssel angeben,
sofern die Sicht einen besitzt. Danach kannst du auch in Sichten Daten
àndern.


mfG

Access-FAQ http://www.donkarl.com/
KnowHow.mdb http://www.freeaccess.de
Newbie-Info http://www.doerbandt.de/Access/Newbie.htm

Ähnliche fragen