Tom: (SQL)(PHP) Prüfung auf Existenz von Datensätzen

Beitrag lesen

Hallo Knud

Meine erste Idee war, wie ich es schonmal in dBase/Foxpro realisiert habe, einen kombinierten Index
auf Postleitzahl und den ersten 5 Buchstaben der Strasse zu legen.
geht das überhaupt mir SQL, kombinierte Indexe?

In der Regel ja, das Anlegen des Indexes hängt jedoch vom verwendeten SQL-Server ab.
Bei MS-SQL sieht dies z.B. so aus:

CREATE UNIQUE
     INDEX [idx_test] ON [dbo].[tblHaendler] ([lngHaendlernummer], [strStrasse], [strPLZ])

Funktionen in der Indexdefinition (z.B.convert() oder case() zum ermitteln der ersten 5 Zeichen eines Feldes) sind, zumindest bei MS-SQL, nicht erlaubt.

Natürlich könnte man jedoch in der Tabelle ein Feld einbauen, dass nur die ersten 5 Buchstaben des Feldes enthält, bzw. direkt einen "eindeutigen" Matchcode aus einer beliebiegen Feld- und Funktionskombination enthält.
Dieses Feld "Matchcode" müsste über Triggers bei jedem Update/Insert, der in die Matchcodebildung einbezogenen Felder, erzeugt werden.

Anschliessend setzt Du den Index nur noch auf dieses Feld.

Ich hoffe, dass ich Dir damit einen Lösungsansatz vermitteln konnte.

Grüsse
Tom