Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FB: Unique Index auf Datum und Uhrzeit (https://www.delphipraxis.net/195085-fb-unique-index-auf-datum-und-uhrzeit.html)

p80286 31. Jan 2018 23:16

AW: FB: Unique Index auf Datum und Uhrzeit
 
Zitat:

Zitat von hoika (Beitrag 1392823)
Oh Mann, muss man wirklich so einen Murks wegen einem Unique Index auf Date machen ??? *wunder*

Kommt darauf an welcher zeitlicher Abstand minimal zwischen zwei Einträgen liegen kann. Wenn die Auflösung des Datentyps kleiner als der minimale Abstand der Einträge ist, solltest Du keine Probleme haben.

Gruß
K-H

Delphi.Narium 31. Jan 2018 23:32

AW: FB: Unique Index auf Datum und Uhrzeit
 
Wenn die kleinste Auflösung Minuten sein soll, dann kann ich bei 'nem Floatwert innerhalb einer Minute noch ein paar tausend Floatwerte bekommen, die innerhalb dieser Minute liegen. Mein Index bleibt aber weiterhin eindeutig.

Wenn ich die Uhrzeit als Float habe, aber die Eindeutigkeit auf maximal einem Satz pro Minute liegen soll, komme ich nicht ohne Rechnerei (Datenmanipulation, Umrechnung ...) aus.

hoika 31. Jan 2018 23:53

AW: FB: Unique Index auf Datum und Uhrzeit
 
Hallo,
kommt so im etwa hin.

TigerLilly 1. Feb 2018 06:51

AW: FB: Unique Index auf Datum und Uhrzeit
 
Du hast diesen Aspekt zwar nicht angesprochen, aber als Anregung:
1) Ein unique-Index, zu dem es in der Wirklich keine unique-Eigenschaft gibt, ist ein Design Flaw.
2) Ein unique-Index auf ein Datum/Zeit Attribut verbirgt meistens ein Designproblem.

jobo 1. Feb 2018 07:29

AW: FB: Unique Index auf Datum und Uhrzeit
 
Noch 2 Anmerkungen:
Ein Date Field mit Date und Time Anteil kann man auch unter Verwendung des Index auf Date abfragen indem man <between :gewünschtesDate and :gewünschtesDate+1 verwendet (Der Parameter darf natürlich dann keinen Timeanteil enthalten), analog mit >< Operatoren.
Gibt es den Bedarf auch reine Time Werte derart abzufragen, sieht es allerdings nicht so gut aus.
Ob es dann für das Time Abfrage Problem Anwendungsfälle gibt, sei mal dahin gestellt.

Neben den rechnerischen Verfahren für exakte DateTime Werte von Delphi.Narium kann man auch Textkonvertierung mit Cast nutzen oder mit AddDate (.. Intervall) arbeiten.

Diese Möglichkeiten bestehen hoffentlich auch im alten Dialekt.

hoika 1. Feb 2018 08:45

AW: FB: Unique Index auf Datum und Uhrzeit
 
Hallo,
Zitat:

TigerLilly
Es geht hier nicht ausschließlich um Datum/Uhrzeit,
sondern das sind zusätzliche Felder, die zusammen mit einem anderen Integer-Feld einen eindeutigen Wert erzeugen sollen.

Zitat:

Textkonvertierung mit Cast
Und damit entfällt das Suchen per Index. Das genau will ich nicht.
Das mit dem Between oder >= <= ist schon klar.

DeddyH 1. Feb 2018 08:56

AW: FB: Unique Index auf Datum und Uhrzeit
 
Und wenn man einfach ein neues Feld mit dem "abgeschnittenen" Datum anlegt, das per Trigger befüllt/aktualisiert wird? Das könnte dann VARCHAR oder INT sein, den Index legt man dann auf dieses Feld, so wie man das früher z.B. für einen case-insensitiven UNIQUE-Index auf VARCHAR-Felder machen musste.

hoika 1. Feb 2018 09:02

AW: FB: Unique Index auf Datum und Uhrzeit
 
Hallo,
ich mag keine Trigger ;)
Nö, ich mach das jetzt mit den Extra-Feldern als String.
Ich bin ja der der die Dateneingabe schreibt, und ändern soll sich das auch nicht lassen.

jobo 1. Feb 2018 09:22

AW: FB: Unique Index auf Datum und Uhrzeit
 
Zitat:

Zitat von hoika (Beitrag 1392855)
Zitat:

Textkonvertierung mit Cast
Und damit entfällt das Suchen per Index. Das genau will ich nicht.

Da hab ich mich nicht verständlich ausgedrückt. Ich meinte die Befüllung der Werte.
Ob die per Mathematik zugeschnitten werden (wenn sie eh als Zahl reinkommen) oder mit Textfunktionen (wenn sie bspw. aus einem Textedit stammen oder einer Komponenten, die auch Stringausgabe liefert), sie landen in der gewünschten Genauigkeit in der Spalte und sind in diesem Range dann eindeutig und bieten das Datenmaterial für einen Unique/Primary Constraint (ob jetzt mit oder ohne andere Spalten)

Das Problem der Un-/Wirksamkeit des Index gilt erst bei der Abfrage, wenn dort bspw. auf der Spalte gecastet wird oder mit anderen Funktionen rumgesäbelt wird.
Erlaubt und sinnvoll ist die Anwendung von Funktionen natürlich wieder auf Parameter Seite.
(Indexwirksamkeit hat natürlich gar nichts mit dem Unique Constraint zu tun, sollte aber immer berücksichtigt werden.)

hoika 1. Feb 2018 09:42

AW: FB: Unique Index auf Datum und Uhrzeit
 
Hallo,
ok.

Zitat:

Das Problem der Un-/Wirksamkeit des Index gilt erst bei der Abfrage,
Nein, die Wirksamkeit beginnt bei mir beim Insert.
Dass ich da auch was abfragen kann, ist mir erst mal nebensächlich.
Ich will verhindern, dass im Mehrnutzerbetrieb aus Versehen ein doppelter Datensatz erzeugt wird.
Im Programm prüfe ich das natürlich vorher selbst, aber sicher ist sicher.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz