Der FoxPro-Kompatible Skriptinterpreter
🔎
Newsletter
Der FoxPro-Kompatible Skriptinterpreter

index on

Erstellt einen Index auf einer Tabelle.

INDEX ON <KeyExpression> TAG <TagName> [CANDIDATE]
  [FOR <LogicalFilterExpression>]

Parameter KeyExpression

Ein Feldname, oder ein Ausdruck, der den Schlüssel beschreibt.

Parameter TagName

Der eindutige Name des Indexes. Der Name wird benötigt um den Index anhand des Namens auszuwählen, zum Beispiel mit der SET ORDER TO-Anweisung.

  1
SET ORDER TO TagName

CANDIDATE-Option

Bei dem Versuch doppelte Schlüssel in den Index einzufügen wird ein Fehler ausgelöst.

FOR-Option

Standardmäßig werden alle Datensätze in den Index aufgenommen. Mit der FOR-Option kann festgelegt werden, dass nur bestimmte Datensätze in den Index aufgenommen werden.

  1
  2
* Beispiel, keine NULL-Felder in den Index aufnehmen
INDEX ON field TAG field FOR not isnull(field)

Beispiele

Das folgende Beispiel erstellt eine temporäre Tabelle und einen Index auf dem Feld "a". Anschließend wird nach dem Schlüssel "12" in dem Index gesucht, der, wie erwartet, auch gefunden wird.

  1
  2
  3
  4
  5
  6
  7
  8
create cursor cursor(a integer)
index on a tag a 
for i = 1 to 100
  append blank
  replace a with i
endfor
seek 12
found(), recno()

true 12

Index mit benutzerdefinierten Schlüsselfunktion

Es ist möglich benutzerdefinierte Funktionen als Schlüsselfunktionen zu verwenden. Bei selbstefinierten Funktionen ist es besonders wichtig sicherzustellen, dass die erzeugten Schlüssel immer gleich groß sind, ansonsten kann es beim Verändern von Datensätzen zu Fehlermeldungen kommen.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
create cursor cursor(a integerb integer)
index on make_user_key(a, b) tag ab
append blank
replace a with 10
replace b with 10
seek 101
found(), recno(), a, b

function make_user_key(a, b)
  return a * b + 1
endfunc

true 1 10 10