ヘッダーをスキップ
Oracle TimesTen In-Memory Database SQLリファレンス・ガイド
リリース11.2.1
B56051-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

3

式は、次の目的に使用します。

ROWIDの指定

TimesTenでは、表に保存される各行にROWIDと呼ばれる一意のIDが割り当てられます。 このROWIDのデータ型はROWIDです。ROWIDは、ROWID擬似列を問い合せることで確認できます。

ROWID擬似列は実際の列ではないため、データベース領域は不要です。また、更新したり、索引を作成したり、削除することはできません。

ROWID値は表に行が存在する間は使用されますが、元の行が削除されると、そのROWIDはシステムによって違う行に割り当てられる場合があります。 0(ゼロ)はROWIDに使用できません。

ROWIDはリカバリ、バックアップおよびリストア処理を行っても使用できます。 ただし、ROWIDはレプリケーション、ttMigrateまたはttBulkCpの処理を行うと使用できなくなります。

ROWIDの詳細は、「式の指定」を参照してください。 ROWIDデータ型の詳細は、「ROWIDデータ型」を参照してください。

ROWNUMの指定

問合せによって戻される行ごとに、ROWNUM擬似列によって、行が選択された順序を示す数値が戻されます。最初に選択された行にはROWNUMとして1が、2番目に選択された行には2が割り当てられ、以降も同様の割当てが行われます。

次の例に示すようにROWNUMを使用して、問合せによって戻される行数を制限します。

SELECT * FROM employees WHERE ROWNUM < 10;

行が選択された順序は、使用している索引および結合順序によって異なります。ORDER BY句を指定すると、ソートが行われる前にROWNUMが割り当てられます。 ただし、ORDER BY句を指定すると、使用している索引および結合順序が変更される可能性があります。選択された行の順序が変更されると、選択された各行に関連付けられているROWNUM値も変更される可能性があります。

たとえば、別の索引が使用された場合、次の問合せは、以前に実行した問合せとは異なる従業員を戻す可能性があります。

SELECT * FROM employees WHERE ROWNUM < 10 ORDER BY last_name;

正の整数より大きいROWNUM値に対する条件テストは常にFALSEになります。たとえば、次の問合せでは行が戻されません。

SELECT * FROM employees WHERE ROWNUM > 1;

ROWNUMを使用して一意の値を表の各行に割り当てます。次に例を示します。

UPDATE my_table SET column1 = ROWNUM;

問合せにFIRST NumRowsまたはROWS m TO nが含まれている場合は、ROWNUMを使用して戻される行の数を制限しないでください。たとえば、次の問合せでは、エラー・メッセージが戻されます。

SELECT FIRST 2 * FROM employees WHERE ROWNUM <1 ORDER BY employee_id;
2974: Using rownum to restrict number of rows returned cannot be combined with first N or rows M to N