Paradox の CREATE INDEX

ODBC Paradox ドライバーの CREATE INDEX ステートメントの構文は次のとおりです。

CREATE [UNIQUE] INDEX index-name

ON table-name

( column-identifier [ASC]

[, column-identifier [ASC]...])

ODBC Paradox ドライバーは、CREATE INDEX ステートメントの ODBC SQL 文法の DESC キーワードをサポートしていません。 table-name 引数は、テーブルの完全なパスを指定できます。

キーワード UNIQUE を指定すると、ODBC Paradox ドライバーによって一意のインデックスが作成されます。 最初の一意のインデックスは、プライマリ インデックスとして作成されます。 これは、table-name.PX という名前 の Paradox 主キー ファイルです。 プライマリ インデックスには、次の制限があります。

  • テーブルに行を追加する前に、プライマリ インデックスを作成する必要があります。

  • プライマリ インデックスは、テーブル内の最初の "n" 列に定義する必要があります。

  • プライマリ インデックスは、各テーブルに 1 つだけ許可されます。

  • プライマリ インデックスがテーブルで定義されていない場合、Paradox ドライバーによってテーブルを更新することはできません。 (テーブルに一意のインデックスが定義されていない場合でも更新できる空のテーブルの場合、これは当てはまらないことに注意してください。)

  • プライマリ インデックスの index-name 引数は、Paradox で必要とされるテーブルのベース名と同じである必要があります。

キーワード UNIQUE を省略すると、ODBC Paradox ドライバーによって一意でないインデックスが作成されます。 これは、table-name.Xnn および table-name.Ynn という名前の 2 つの Paradox セカンダリ インデックス ファイルで構成されます。ここで、nn はテーブル内の列の番号です。 一意でないインデックスには、次の制限があります。

  • テーブルに対して一意でないインデックスを作成するには、そのテーブルのプライマリ インデックスが存在する必要があります。

  • Paradox 3.x の場合、プライマリ インデックス (一意または非一意) 以外のインデックスの index-name 引数は列名と同じである必要があります。 Paradox 4.x と 5.x の場合、そのようなインデックスの名前は列名と同じにすることができますが、そうである必要はありません。

  • 一意でないインデックスに指定できる列は 1 つだけです。

テーブルに対してインデックスが定義された後は、列を追加できません。 CREATE TABLE ステートメントの引数リストの最初の列がインデックスを作成する場合、2 番目の列を引数リストに含めることはできません。

たとえば、販売注文番号と行番号の列を SO_LINES テーブルの一意のインデックスとして使用するには、次のステートメントを使用します。

CREATE UNIQUE INDEX SO_LINES  
 ON SO_LINES (SONum, LineNum)  

SO_LINES テーブルの一意でないインデックスとして部品番号列を使用するには、次のステートメントを使用します。

CREATE INDEX PartNum  
 ON SO_LINES (PartNum)  

2 つの CREATE INDEX ステートメントを実行すると、最初のステートメントは常にテーブルと同じ名前のプライマリ インデックスを作成し、2 番目のステートメントは常に列と同じ名前の一意でないインデックスを作成します。 これらのインデックスは、CREATE INDEX ステートメントに異なる名前が入力されている場合でも、2 番目の CREATE INDEX ステートメントでインデックスに UNIQUE というラベルが付けられている場合でも、この方法で名前が付けられます。

Note

Borland データベース エンジンを実装せずに Paradox ドライバーを使用する場合、読み取りと追加のステートメントのみが許可されます。