AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi 1 Sekunde Unterschied zwischen DB DateTime Feld und Anwendung beim Speichern
Thema durchsuchen
Ansicht
Themen-Optionen

1 Sekunde Unterschied zwischen DB DateTime Feld und Anwendung beim Speichern

Ein Thema von Piro · begonnen am 30. Mai 2013 · letzter Beitrag vom 5. Jun 2013
 
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: 1 Sekunde Unterschied zwischen DB DateTime Feld und Anwendung beim Speichern

  Alt 31. Mai 2013, 07:08
Für mich ist die Sekunde wichtig, da ich das lastupdate aus der Anwendung in einer weiteren Abfrage verwende
Das ist der eigentliche Fehler. Es entspricht nicht dem Wesen eines Datums/Uhrzeitwertes, als Identifikator für einen Datensatz herzuhalten. Du kannst Klimmzüge unternehmen (runden z.B.), aber das ist imho einfach nicht richtig. Was ist, wenn plötzlich zwei Anwendungen gleichzeitig Daten generieren. Oder eine Anwendung innerhalb einer Sekunde mehrere Datensätze?

Du möchtest doch einen eindeutigen Identifikator, um deine Daten wiederzufinden, oder? Dann verwende einen.

Um einen Datensatz zu markieren, verwende wahlweise einen Zähler (identity), eine GUID (uniqueIdentifier) oder einen Timestamp.
Du kannst das clientseitig generieren, hast aber dann i.A. das Problem, das bei Mehrfachzugriff auf die Schreibfunktionen diese Identifikatoren u.U. nicht eindeutig ist (Ausnahme: GUID).

Mein Tipp: Verwende eine IDENTITY-Spalte. Genausogut geht aber eine GUID oder TimeStamp-Spalte. ADO liefert dir den neu erzeugten Wert, wenn Du die Feldinformation dieser Spalte richtig initialisierst (Eigenschaften 'AutoGenerateValue'). Auch wenn es immer wieder diesbezüglich Fragen gibt.

Eine Alternative wäre das Absetzen des Befehls 'INSERT' mit der 'OUTPUT'-Klausel, was ich wiederum sehr charmant finde:
SQL-Code:
insert
  YourTable
  (Fields)
output
  inserted.PKColumn
values
  (<YourValueList>)
also z.B.:
SQL-Code:
--Create Table MyTable (ID int IDENTITY (1,1), Name VarChar(50))
insert MyTable (Name) output inserted.ID values ('Furtbichler')
Diesen Befehl kannst Du in einer TADOQuery ausführen. Natürlich mit parametrierten Werten

Geändert von Furtbichler (31. Mai 2013 um 07:12 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 Uhr.
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