作成するリストの名前を指定します。
既にあるリスト名を指定した場合,そのリストを削除し新しく作成したリストを有効とします。
認可識別子には,表の所有者の認可識別子を指定します。
表識別子には,作成するリストの基になる実表の名前を指定します。
表識別子には,以下の表は指定できません。
- 共用表
- WITHOUT ROLLBACKを指定した表
- ビュー表
- 外部表
- 表別名
- 既定文字集合以外の文字集合を指定した列を含む表
探索条件には,取り出す行を選択する条件を指定します。
探索条件を省略した場合は,指定した表のすべての行がリストになります。
ASSIGN LIST文の探索条件には,論理演算子としてANDNOTも指定できます。論理演算の評価の優先順位は,ANDと同じです。
ANDNOT論理演算をした場合の述語の結果を次に示します。
左辺 |
右辺 |
T |
F |
? |
T |
F |
T |
T※ |
F |
F |
F |
F |
? |
F |
? |
? |
- (凡例)
- T:真であることを示します。
- F:偽であることを示します。
- ?:不定であることを示します。
- 注※
- C1=V1 ANDNOT C2=V2は,C1=V1 AND NOT C2=V2と等価ではありません。
- 述語1=(述語2ANDNOT述語3)とすると,述語1を満たす集合は,述語2を満たす集合と述語3を満たす集合の差となります。
- 述語1=(述語2AND NOT述語3)とすると,述語は述語2とNOT述語3とのAND論理演算をした結果になります。
- したがって,AND NOTの場合,上記真理値表の※は?(不定)となります。
探索条件についての規則を次に示します。
- 探索条件中に,次のものは指定できません。
- 副問合せ(NOT指定のないIN述語中での,外への参照のない表副問合せは指定できます)
- 四則演算,日付演算,時刻演算,連結演算,スカラ関数,CASE式,及びCAST指定
- 列指定 比較演算子 列指定
- 両辺が定数,USER,CURRENT_DATE,CURRENT_TIME,又はCURRENT_TIMESTAMP〔(p)〕から成る比較述語
- 値式1が列指定で,値式2,又は値式3が列指定のBETWEEN述語
- コンポネント指定
- 関数呼出し(インデクスを使用するロジックを実装したプラグイン提供関数は指定できます)
- IS FALSE,IS UNKNOWNの論理述語
- XMLQUERY,XMLSERIALIZE,XMLPARSE,及び列指定のXML問合せ文脈項目の指定がないXMLEXISTS述語
- 探索条件中の列名には,表名,及び相関名を指定できません。
- 探索条件中に繰返し列を指定した場合は,添字としてANYを指定する必要があります。
- 探索条件で指定したすべての列にインデクス(IS NULL述語に指定した列に対して,除外キーを持つインデクスを除く)が定義されていなければなりません。構造化繰返し述語に対しては,構造化繰返し述語の探索条件中に指定した,すべての繰返し列を構成列に含む複数列インデクスが定義されていなければなりません。
- 繰返し列と繰返し列以外の列の両方を構成列に含むインデクスを使用して,繰返し列でない列の述語を評価する場合,繰返し列のどれかの列に条件を指定していればインデクスは使用できます。
- 表副問合せを指定したIN述語中の列には,次のどちらかのインデクスが定義されていなければなりません。なお,(b)はSQL最適化モードがコストベース最適化モード2の場合に限ります。
(a) 単一列インデクス
(b) 表副問合せを指定したIN述語中の列を先頭とする複数列インデクス
表副問合せを指定したIN述語中の列が複数列インデクスの先頭でない場合でも,この列より前のインデクス構成列に,比較述語(=),NULL述語(IS NULL),又は右辺が値指定のIN述語(IN)のどれかが指定されていればかまいません。ただし,繰返し列をインデクス構成列に含むインデクスは除きます。また,右辺が値指定のIN述語(IN)の場合は,値指定の個数が次のどちらかの条件を満たしている必要があります。
- INが1列だけの場合,値指定の個数は5以下
- INが2列以上の場合,それぞれの列に指定した値指定の個数の積が5以下
- 探索条件を指定しない場合は,リストの基になるすべての表について,繰返し列以外のどれかの列にインデクス(プラグインインデクス,除外キーを持つインデクスを除く)が定義されていなければなりません。
- 繰返し列を指定した述語は論理演算子NOTで否定できません。
- ANDNOT論理演算を含む述語は論理演算子NOTで否定できません。
- 論理述語はNOTで否定できません。
- 表副問合せを指定したIN述語は論理演算子NOTで否定できません。
- 探索条件中にXMLEXISTS述語を指定した場合は,XQuery問合せがインデクスの使用条件を満たす必要があります。インデクスの使用条件については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。
- 〔WITHOUT LOCK 〔{WAIT|NOWAIT}〕〕
このオペランドを省略した場合は,一度検索したデータの内容をトランザクションが終了するまで保証します。
- WITHOUT LOCK〔WAIT〕
- 一度検索したデータの内容をトランザクション終了まで保証する必要がない場合に指定します。
- WITHOUT LOCK〔WAIT〕を指定した場合,HiRDBはトランザクション終了を待たないで排他制御を解除するので,同時実行性を向上できます。
- WITHOUT LOCK NOWAIT
- ほかのユーザが更新中のデータでも,更新の完了を待たないで参照し,一度検索したデータの内容をトランザクション終了まで保証する必要がない場合に指定します。
- WITHOUT LOCK NOWAITを指定した場合,HiRDBは排他制御をしません。更新中の表に対しても排他待ちしないで検索できるので,より同時実行性を向上できます。しかし,更新中の表を検索した場合は,タイミングによっては不正なデータが得られる場合があります。
- 〔{WITH ROLLBACK|NO WAIT}〕
このオペランドを省略した場合は,検索する表をほかのユーザが使用中ならば,使用中のユーザのトランザクションが終了するまで待ち,その後実行します(WITHOUT LOCK NOWAIT指定の場合を除く)。
- WITH ROLLBACK
- 検索する表をほかのユーザが使用中の場合,トランザクションを取り消して無効にしたいときに指定します。
- NO WAIT
- 検索する表をほかのユーザが使用中の場合,トランザクションを取り消さないでエラーにしたいときに指定します。ただし,このSQLの実行中に掛けた排他は解除されません。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.