Autor Beitrag
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Fr 25.10.02 16:40 
Hallo,
hab da eine Frage,
ist es möglich auf Datenbank-Seite zu verhindern, dass doppelte Einträge in ein 300 Zeichen großes Feld geschrieben werden?

Das Feld als Unique zu kennzeichnen funktioniert nicht, weil der Index da nicht mitspielt, das Feld sei zu groß.

Muss ich das jetzt wirklich manuell machen?

Gruß, Uwe
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mo 28.10.02 09:14 
Hi
UGrohne hat folgendes geschrieben:
Muss ich das jetzt wirklich manuell machen?

Kommt drauf an welche Datenbank du verwendest. Bei einer SQL-Datenbank könntest du nen Trigger für BeforeInsert verwenden. Poste doch mal welche DB dur verwendest.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
UGrohne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 28.10.02 13:29 
Wer lesen kann, hat einen Vorteil oder nicht? Lies mal die Überschrift *g*
OK, Scherz, ich schreibs nochmal hin: Interbase 6 OS

Aber Trigger is schonmal ne gute Idee, danke
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mo 28.10.02 13:50 
UGrohne hat folgendes geschrieben:
Wer lesen kann, hat einen Vorteil oder nicht? Lies mal die Überschrift *g*

:autsch: Voll erwischt :oops:

Aber bei 300 Zeichen auf doppelte Einträge überprüfen ?? Wenn da ein Zeichen ne unterschiedliche Gross-/Kleinschreibung verwendet wird, sind's schon unterschiedliche Einträge.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 28.10.02 14:07 
Hi!

Etwas umständlich ginge es so: In einem BeforeUpdate bzw. BeforeInsert-Trigger könntest du durch eine UDF einen Hash dieser 300 Zeichen erzeugen. Diesen Hash könntest du in ein weiteres Feld schreiben, das als unique gekennzeichnet ist. Hashes sind zwar theoretisch nicht eindeutig, aber die Wahrscheinlichkeit, dass zwei unterschiedliche Zeichenketten denselben Hash erzeugen, ist verschwindend gering.

BTW: Ein 300 Zeichen langes Feld? Was kommt denn darein? Wäre es nicht möglich, dies evtl. aufzusplitten?

Cu,
Udontknow
UGrohne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 28.10.02 14:40 
Tja, verkleinern ist leider nicht möglich, das ist die Anforderung an das Feld, ist die Beschreibung für einen Artikel. Splitten geht also auch net wirklich, wäre zuviel Aufwand. Der Punkt ist der, dass ich von einer alten Datenbank Daten importieren muss. Jetzt werde ich es wahrscheinlich so machen, dass die Daten durchgegangen werden und dann gefragt wird, was mit den doppelten geschehen soll.

Vielleicht aber auch net *g*, inzwischen ist dieses Problem nicht mehr von entscheidender Bedeutung *g*

Trotzdem danke für den Tipp, vll. bau ich das noch ein....

Uwe
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 28.10.02 15:14 
Na, dann muss ich LCS recht geben:

Was macht es für einen Sinn, so ein Feld als unique zu deklarieren, wenn dort Benutzer eine bis zu 300 Zeichen lange Beschreibung eintragen können? Die Wahrscheinlichkeit, das jemand haargenau dieselbe Wortwahl trifft, ist wiederum verschwindend gering.

Da fällt mir noch was ein: In einem Trigger könntest du ja einfach die ersten x (X=Anzahl Zeichen, die eine Indizierung noch zulassen) Zeichen aus dem Feld nehmen und in ein anderes packen, das dann als unique deklariert ist. So kommst du dann ohne Hashes aus.

Cu,
Udontknow
UGrohne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 28.10.02 15:18 
LCS hat folgendes geschrieben:

Aber bei 300 Zeichen auf doppelte Einträge überprüfen ?? Wenn da ein Zeichen ne unterschiedliche Gross-/Kleinschreibung verwendet wird, sind's schon unterschiedliche Einträge.

Hast Recht, also wird es wohl doch alles auf Programmebene gemacht werden, hab ich mehr Kontrolle.... aber wie gesagt, alles nicht mehr so wichtig

Gruß