Entwickler-Ecke
Datenbanken - Doppelte Einträge bei großen Feldern (Interbase)
UGrohne - Fr 25.10.02 17:40
Titel: Doppelte Einträge bei großen Feldern (Interbase)
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 - Mo 28.10.02 10:14
Titel: Re: Doppelte Einträge bei großen Feldern (Interbase)
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
UGrohne - Mo 28.10.02 14: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 - Mo 28.10.02 14: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
Udontknow - Mo 28.10.02 15: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 - Mo 28.10.02 15: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 - Mo 28.10.02 16: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 - Mo 28.10.02 16: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ß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!