TOP をテンプレートにして作成
ホーム
バックアップ
一覧
検索
最終更新
ヘルプ
ログイン
開始行
[[FrontPage]]へ~
-[[リファレンスガイド]]へ~
--[[Firebird SQLリファレンス]]へ~
&br;
----
*Firebird SQL リファレンス:CREATE VIEW, DROP VIEW, CREATE...
#contents
----
&br;
&aname(create_view);
*CREATE VIEW [#jcc93577]
1つまたはいくつかのテーブルよりのデータを得るためのビ...
します。
SQL,DSQL,isqlで使用できます。~
**構文 [#we93f13d]
CREATE VIEW name [(view_col [, view_col …])]
AS <select> [WITH CHECK OPTION];
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|ビュー名です。データベース内の、すべてのビュー、テ...
|view_col|ビューの列の名前です。|
|~|・各列の名前は、ビューの中で一意である必要があります。|
|~|・必要ならば、ビューの中に式を含めることが出来ます。(...
|~|・デフォルトでは、指定したテーブルの列名が使用されます。|
|select|ビューに対して行を設定する、SELECT を指定します。|
|WITH CHECK OPTION|ビューに対してINSERTやUPDATEを実行する...
&br;
**詳細の説明 [#xc047829]
CREATE VIEW により、データベースのいくつかのテーブルに...
ビューを作成できます。ビュー内の行は、元となるテーブルに...
選択された列から構成されます。~
ビューは、その定義のみがデータベースに格納されます。そ...
はデータベースに格納されません。~
ビューは、テーブルと同様にSELECTや、JOIN,UNIONなどの操...
が出来ます。~
&br;
ビューを作成したユーザーは所有者となり、他ユーザーへのG...
の特権(ロール、トリガ、ビュー、ストアドプロシ−ジャ)を保有...
の特権を与えられたユーザーは、元となったテーブルに対して...
ビューにアクセスすることが可能です。~
ただし、ビューの作成時には、
-リードオンリーのビューの場合、元となるテーブルすべてにSE...
-更新可能なビューの場合、元となるテーブルすべてにALL特権...
&br;
&br;
view_col の指定を行うことにより、そのビューの列に指定し...
ことを保証できます。~
ビューでの列名指定の順番は、SELECTで指定した列名リスト...
それは前方一致指定となりますので、ビュー内のすべての列名...
いるとは限りません。~
&br;
view_col による列には、出力された2つの列を結合する式を...
することが出来ます。その式は、1つの値を返す式でなければ...
要素を返す式であってはなりません。また、ビューに式を含む...
は必ず必要となります。~
※式で使われる列は、すべて事前に宣言されたものでなければな...
&br;
指定するSELECTでは、ORDER BYを使用することは出来ません。~
&br;
元の列指定に SELECT * 〜の指定を使用した場合、ビュー内...
での順番と同じになります。~
&br;
WITH CHECK OPTION を有効にすることにより、ビューで行の...
時に、事前にデータベースエンジンがチェックを行うことが出...
WITH CHECK OPTIONは、リードオンリーであるビューに対しての...
下さい。~
&br;
※ストアドプロシージャに対するSELECTをベースとしたビューを...
出来ません。~
&br;
※DSQLでは、UNIONが含まれたビュー定義をサポートしていませ...
ビューを作成する場合は、埋め込みSQLを使用してください。~
&br;
更新可能なビューの場合は以下の条件を満たしている必要が...
条件が1つでも満たされない場合は、リードオンリーとなりま...
-1つのテーブルまたは別のビューのサブセットであること。
-元となるテーブル中でビューの定義から外された列は、すべて...
可能であること。
-ビューのSELECT文には、サブクエリ、DISTNICT、HAVING、集計...
ユーザー定義関数(UDF)、ストアドプロシージャを含まないこと。
&br;
※リードオンリーのビューでも、ユーザー定義の参照制約、トリ...
インデックスなどにより更新することは可能です。~
&br;
**用例 [#m1235847]
すべて isql での例です。~
&br;
-更新可能なビューを作成しています。
CREATE VIEW SNOW_LINE (CITY, STATE, SNOW_ALTITUDE) AS
SELECT CITY, STATE, ALTITUDE
FROM CITIES WHERE ALTITUDE > 5000;
&br;
-ネストしたクエリを使用したビューです。
CREATE VIEW RECENT_CITIES AS
SELECT STATE, CITY, POPULATION
FROM CITIES WHERE STATE IN
(SELECT STATE FROM STATES WHERE STATEHOOD > '1-JAN...
&br;
-一連の動作例です。更新可能なビューに WITH CHECK OPTION ...
によるチェックを通らないものを入力できないようにします。
--WITH CHECK OPTION 付きのビューを作成します。
CREATE VIEW HALF_MILE_CITIES AS
SELECT CITY, STATE, ALTITUDE
FROM CITIES
WHERE ALTITUDE > 2500
WITH CHECK OPTION;
--WITH CHECK OPTION が指定されているので、次の挿入は失敗...
INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)
VALUES ('Chicago', 'Illinois', 250);
--次のような挿入は成功します。
INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)
VALUES ('Truckee', 'California', 2736);
--WITH CHECK OPTIONを指定したビューを更新するとき、ビュー...
に合致しない行を更新することは出来ません。次のような更新...
UPDATE HALF_MILE_CITIES
SET ALTITUDE = 2000
WHERE STATE = 'NY';
&br;
-2つのテーブルを結合しているので、リードオンリーのビュー...
CREATE VIEW PHONE_LIST AS
SELECT EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, LOCAT...
FROM EMPLOYEE, DEPARTMENT
WHERE EMPLOYEE.DEPT_NO = DEPARTMENT.DEPT_NO;
&br;
**参照 [#ze152b84]
[[CREATE TABLE>CREATE TABLE#create_table]] , [[DROP VIE...
GRANT , [[INSERT>INSERT#insert]] , REVOKE , [[SELECT>SELE...
[[UPDATE>INSERT#update]]~
&br;
すべての情報を得るには、Data Definition Guide の views ...
下さい。
&br;
&br;
----
&br;
&br;
&aname(drop_view);
*DROP VIEW [#e777b0b5]
ビュー定義をデータベースから削除します。
SQL,DSQL,isqlで使用できます。~
**構文 [#k8d3332c]
DROP VIEW name;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|削除したい、既存のビューの名前です。|
&br;
**詳細の説明 [#g25b4ca6]
DROP VIEW により、ビューが他のビューやストアドプロシー...
により現在使用されていない場合に限り、ビューをデータベー...
出来ます。~
&br;
ビューを削除できるのは、作成者、SYSDBAユーザー、およびO...
持ったユーザーのみです。~
&br;
**用例 [#w0da92e9]
ビューを削除します。
DROP VIEW PHONE_LIST;
&br;
**参照 [#lf240d8f]
[[CREATE VIEW>#create_view]]~
&br;
&br;
----
&br;
&br;
&aname(recreate_view);
*RECREATE VIEW [#v9ecfa70]
既存のビューを破棄せずに、同じ名前で再作成できます。
SQL,DSQLで使用できます。~
&br;
構文は[[CREATE VIEW>#create_view]]とまったく同一です。~
&br;
使用中のビューを再作成しようとすると失敗します。~
&br;
&br;
&br;
----
&br;
&br;
&aname(create_generator);
*CREATE GENERATOR [#r5b46c82]
データベースで使用するジェネレータを宣言します。
SQL,DSQL,isql で使用可能です。~
この文書は、公開されているIB6のSQLレファレンスを基とし...
各リリースノートにおける追加内容に関して反映・統合されて...
**構文 [#w20b3116]
CREATE GENERATOR name;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|ジェネレータの名前です。データベースで一意である必...
&br;
**詳細の説明 [#s13999f8]
CREATE GENERATOR により、データベースにジェネレータを宣...
0とします。ジェネレータは、組込み関数GEN_ID()を使用した列...
連続した番号を生成します。ジェネレータは、行を特定する番...
PRIMARY KEYに、ユニークな番号を付与するためによく使用され...
&br;
データベースには、多数のジェネレータを宣言することが出...
はデータベース内でグローバルなオブジェクトであり、どのト...
でも更新することが出来ます。また、そのように複数のトラン...
使用された場合でも、同じ値が割当てられないことが保証され...
&br;
GEN_ID()を呼び出す書込み時のトリガ、プロシ−ジャ、SQL文...
変更する場合、SET GENERETOR を使用します。~
&br;
**用例 [#q2ff28fd]
-isqlでの使用例です。EMPNO_GENというジェネレータを宣言し...
なかで GEN_ID() を呼び出すようにしています。SET TERM は、...
変更する文です。
NEW.RMPNOの値は 1から始まり、その後は1づつ加算されていき...
CREATE GENERATOR EMPNO_GEN;
COMMIT;
SET TERM !! ;
CREATE TRIGGER CREATE_EMPNO FOR EMPLOYEES
BEFORE INSERT POSITION 0
AS BEGIN
NEW.EMPNO = GEN_ID(EMPNO_GEN, 1);
END
!!
SET TERM ; !!
&br;
**参照 [#c64c1164]
[[GEN_ID()>組込み関数一覧#gen_id]] , [[DROP GENERETOR>#...
[[SET GENERATOR>#set_generator]]~
&br;
&br;
&br;
----
&br;
&br;
&aname(drop_generator);
*DROP GENERATOR [#l89f9b0b]
既存のジェネレータをデータベースから削除します。
SQL,DSQL,isql で使用可能です。~
この文書は、1.5.1までのリリースノートにおける追加内容に...
されています。~
**構文 [#x28628c9]
DROP GENERATOR name;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|削除を行いたい、既存のジェネレータの名前です。|
&br;
**詳細の説明 [#h0d4124d]
DROP GENERETOR により、既存のジェネレータをデータベース...
これにより確保されていたストレージのエリアは解放され、次...
再利用可能となります。
**用例 [#xa278d48]
ジェネレータの削除を行います。
DROP GENERATOR EMPNO_GEN;
**参照 [#z2db553e]
[[CREATE GENERATOR>#create_generator]]~
&br;
&br;
----
&br;
&br;
&aname(set_generator);
*SET GENERATOR [#i5ba0f1b]
既存のジェネレータに、新しい値をセットします。
SQL, DSQL, isqlで使用できます。~
**構文 [#o117bf93]
SET GENERATOR name TO int;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|既存のジェネレータの名前です。|
|int|ジェネレータに設定したい値です。設定可能な範囲は、整...
&br;
**詳細の説明 [#m1fcfb23]
SET GENERETOR により、作成済みのジェネレータの値の初期...
できます。ジェネレータは、GEN_ID()関数により連続したユニ...
します。新しく作成し、SET GENERETOR により初期化を行って...
の開始値は、0となります。~
&br;
int は、ジェネレータにセットする新しい値です。挿入や更...
のためにGEN_ID()関数を呼び出すと、GEN_ID()関数で指定した...
インクリメントされた数値を返します。~
SET GENERATOR で開始値を 0 にセットし、GEN_ID()のステッ...
最初の GEN_ID() での呼び出しで返る値は 1 となります。~
&br;
''重要''
PRIMARY KEY、UNIQUE 制約が設定された列への値設定に使用...
ジェネレータに値をセットするとき、新設定値が適当なもので...
行と同じ値が生成され、新しい挿入や更新が失敗する場合があ...
下さい。~
&br;
**用例 [#o5929c33]
isqlでの例です。ジェネレータの値を1,000に設定します。次...
をステップ値 1 で行った場合、得られる値は 1,001 となります。
SET GENERATOR CUST_NO_GEN TO 1000;
&br;
**参照 [#f8692804]
[[CREATE GENERATOR>#create_generator]] ,
CREATE PROCEDURE , CREATE TRIGGER ,
[[GEN_ID()>組込み関数一覧#gen_id]]~
&br;
&br;
&br;
----
&br;
&br;
&aname(create_shadow);
*CREATE SHADOW [#udaafb4c]
データベースの複製をいくつか作成します。コピーは非同期...
SQL,DSQL,isqlで使用できます。~
情報が少ないため、IB6 の Data Definition Guide 、Operat...
情報を元に、独自かつ大幅に補足しました。~
**構文 [#lc6de236]
CREATE SHADOW set_num [AUTO | MANUAL] [CONDITIONAL]
'filespec' [LENGTH [=] int [PAGE[S]]]
[<secondary_file>];
<secondary_file> = FILE 'filespec' [<fileinfo>] [<second...
<fileinfo> = LENGTH [=] int [PAGE[S]]
| STARTING [AT [PAGE]] int [<fileinfo>]
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|set_num|シャドウセットの番号を表す正の整数。以降の指定す...
|AUTO|省略時のデフォルト指定です。指定を行うと、シャドウ...
|~|・すべての接続やアクセスは成功します。|
|~|・シャドウに対するすべての参照が削除され、シャドウファ...
|MANUAL|指定を行うと、シャドウが利用可能になる、もしくは...
|CONDITIONAL|プライマリ(主)なシャドウが利用できなくなった...
|'filespec'|シャドウファイルの完全なパス名とファイル名で...
|LENGTH [=] int [PAGE[S]]|追加するシャドウファイルのサイ...
|secondary_file|セカンダリ(二次)シャドウファイルのパス名...
|STARTING [AT [PAGE]] int|セカンダリシャドウファイルの、...
&br;
**構文 [#t2dbb595]
CREATE SHADOW により、二次的な記憶装置にいくつかのデー...
作成することによって、(記憶装置の故障などが原因である)デ...
が不可能になるという事態を防ぎます。そのデータベースコピ...
と呼ばれ、1つまたはいくつかのファイルで構成されます。各...
一意な整数の番号が振られます。~
シャドウの作成は、データベースの排他アクセスを必要とし...
行うことが出来ます。~
&br;
ディスクのシャドウは以下の3つのコンポーネントから成り...
-シャドウ化するデータベース
-システムテーブルのRDB$FILES。(シャドウファイルのリストと...
その他の情報を格納)
-シャドウセット。1つまたはいくつかのシャドウファイルから...
&br;
&br;
CREATE SHADOW が実行されると、データベースに最も最近接...
アプリケーションのためにシャドウを設置します。シャドウセ...
いくつかのファイルで構成されます。ディスク装置に故障が発...
データベース管理者(DBA)は、シャドウセットをデータベースと...
ディスク上のシャドウを活性化します。
(訳注:gfixコマンドなどの管理ツールにより活性化できます)。
もし CONDITIONAL が指定された場合は、データベース管理者(D...
活性化によりデータベースの交代を行うときに、データベース...
シャドウが設置されます。~
&br;
データベースのサイズがシャドウを作成するディスクに納ま...
secondary_file 指定を行うことにより、複数ファイル構成のシ...
定義できます。複数ファイル構成のシャドウファイルは、各々...
に格納することも出来ます。~
&br;
※既存のディスクシャドウにセカンダリファイルを追加したい場...
で一度削除した後に、CREATE SHADOW により所望するファイル...
シャドウを再作成することにより実現します。~
&br;
シャドウファイルは、Windows 等のNFS以外のシステムにおい...
と同じホストに設置する必要があります。ファイルの指定にホ...
マッピングされたドライブを指定することは出来ません。~
UNIX/Linuxでは、NFSでマウントされたディレクトリに設置す...
しかし、(障害以外に排他アクセス問題などの)NFSに関するトラ...
にはシャドウが永遠に失われる危険があります。そのため、こ...
ではありません。~
&br;
データベースのシャドウファイルは、データベースファイル...
使用できなくなる場合があります。例えば、ディスク障害、ネ...
過失による削除などの理由です。~
AUTO/MANUALの指定を行うことにより、シャドウで異常が発生...
できます。指定を省略した場合、AUTOを指定したものとみなさ...
-AUTO指定~
シャドウの操作が不可能となった場合でも、データベースへ...
継続出来ます。~
オリジナルのシャドウを作成するときに CONDITIONAL 指定が...
は、新しいシャドウが自動的に作成されます。指定を行わなか...
シャドウを作成する必要があります。~
-MANUAL指定~
障害時のデータベース連続運用の保証よりも、(データベース...
信頼性と継続性を重視するために)シャドウ処理の継続性が重要...
MANUAL指定によるマニュアルモードは非常に有効です。マニュ...
シャドウの操作が不可能な状態になると、以後のデータベース...
となります。~
データベースに接続できるようにするためには、データベー...
シャドウファイルの削除とそれらへの参照を削除し、新しいシ...
ければなりません。~
&br;
シャドウを作成するときに CONDITIONAL 指定を行った場合、...
シャドウとなり、データベースの交代が行われるときに自動的...
を作成します。これにより、シャドウ処理は自動継続します。~
条件付のシャドウにおいてシャドウが自動作成されるのは、...
のいずれかまたは両方の場合です。
-データベースファイル本体またはいずれかのシャドウファイル...
状態に陥った場合
-ハードウェア異常のため、シャドウがデータベースの処理を引...
**用例 [#w6c23f04]
すべて、isqlでの例です。~
-シングル構成(employee.shd)のシャドウファイル(シャドウセ...
CREATE SHADOW 1 AUTO 'employee.shd';
-シングル構成(employee.shd)、AUTO、CONDITIONAL指定のシャ...
(シャドウセット2)を作成します。
CREATE SHADOW 2 CONDITIONAL 'employee.shd' LENGTH 1000;
-マルチファイル構成のシャドウセットを作成します。
--セカンダリファイルの開始ページを指定しています。
CREATE SHADOW 3 AUTO 'employee.sh1'
FILE 'employee.sh2' STARTING AT PAGE 1000
FILE 'employee.sh3' STARTING AT PAGE 2000;
--プライマリや最終以外のセカンダリファイルのサイズを指定...
CREATE SHADOW 4 MANUAL 'employee.sdw' LENGTH 1000
FILE 'employee.sh1' LENGTH 1000
FILE 'employee.sh2';
&br;
**シャドウの活性化(障害時の交代) [#m9d19150]
この項は、Data Definition Guideの、Activating a shadow...
います。~
&br;
データベースが何らかの理由で使用不可能になったときは、...
を活性化することによりデータベースのオペレーションを再開...
「SYSDBAユーザー」または「データベースの所有者」としてロ...
gfixコマンドに、-active (または -a)オプションをつけて実行...
実現されます。~
&br;
''重要'' シャドウを活性化する前に、メインデータベースが...
いるかを忘れずにチェックしましょう。メインデータベースが...
あるときにシャドウが活性化されると、その前後や最中にメイ...
接続しているアプリケーションなどにより、シャドウが不適当...
ありえます。~
&br;
gfix でシャドウを活性化する場合には、シャドウのプライマ...
1つ指定します。(マルチファイル構成のシャドウの場合も同...
例えば、employee.fdb というデータベースのシャドウ(emplo...
する場合、次のようなコマンドを実行します。ちなみに、通常...
ユーザー名やパスワードのオプション指定(-user,-password)も...
gfix -a employee.shd
シャドウの活性化を行った後は、その名前をオリジナルのデ...
に変更することが推奨されています。そして、別のドライブ装...
ならば、新たなシャドウをその別ドライブに作成するべきです。~
**参照 [#e09a39a8]
[[DROP SHADOW>#drop_shadow]]~
&br;
これ以上の情報が欲しい場合は、Operations Guide や Data ...
の using shadows の項を参照して下さい。~
&br;
&br;
&br;
----
&br;
&br;
&aname(drop_shadow);
*DROP SHADOW [#ybc21306]
データベースのシャドウを削除します。
SQL,DSQL,isqlで使用できます。~
情報が少ないため、IB6 の Operation Guide からの情報を元...
補足しました。~
**構文 [#l7cad425]
DROP SHADOW set_num;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|set_num|既存のシャドウセットを識別するための、正の整数番号|
&br;
**詳細の説明 [#jcf6262b]
DROP SHADOW により、シャドウセットを削除してシャドウ処...
isql で SHOW DATABASE コマンドを打ち込むことにより、デ...
シャドウセットを参照できます。~
&br;
シャドウの削除を行うと、メタデータの削除と同時にシャド...
も行われます。そのため、削除を行った場合は、これを回復さ...
なります。しかし、シャドウは単にメインデータベースのコピ...
ほとんど問題となりません。~
&br;
シャドウを削除できるのは、作成者、SYSDBA ユーザー、また...
所有するユーザーのみです。~
&br;
**用例 [#v09c6d3e]
isqlで、データベースのシャドウセットを削除する例です。
DROP SHADOW 1;
&br;
**参照 [#ibf87e7d]
[[CREATE SHADOW>#create_shadow]]~
&br;
最終行:
[[FrontPage]]へ~
-[[リファレンスガイド]]へ~
--[[Firebird SQLリファレンス]]へ~
&br;
----
*Firebird SQL リファレンス:CREATE VIEW, DROP VIEW, CREATE...
#contents
----
&br;
&aname(create_view);
*CREATE VIEW [#jcc93577]
1つまたはいくつかのテーブルよりのデータを得るためのビ...
します。
SQL,DSQL,isqlで使用できます。~
**構文 [#we93f13d]
CREATE VIEW name [(view_col [, view_col …])]
AS <select> [WITH CHECK OPTION];
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|ビュー名です。データベース内の、すべてのビュー、テ...
|view_col|ビューの列の名前です。|
|~|・各列の名前は、ビューの中で一意である必要があります。|
|~|・必要ならば、ビューの中に式を含めることが出来ます。(...
|~|・デフォルトでは、指定したテーブルの列名が使用されます。|
|select|ビューに対して行を設定する、SELECT を指定します。|
|WITH CHECK OPTION|ビューに対してINSERTやUPDATEを実行する...
&br;
**詳細の説明 [#xc047829]
CREATE VIEW により、データベースのいくつかのテーブルに...
ビューを作成できます。ビュー内の行は、元となるテーブルに...
選択された列から構成されます。~
ビューは、その定義のみがデータベースに格納されます。そ...
はデータベースに格納されません。~
ビューは、テーブルと同様にSELECTや、JOIN,UNIONなどの操...
が出来ます。~
&br;
ビューを作成したユーザーは所有者となり、他ユーザーへのG...
の特権(ロール、トリガ、ビュー、ストアドプロシ−ジャ)を保有...
の特権を与えられたユーザーは、元となったテーブルに対して...
ビューにアクセスすることが可能です。~
ただし、ビューの作成時には、
-リードオンリーのビューの場合、元となるテーブルすべてにSE...
-更新可能なビューの場合、元となるテーブルすべてにALL特権...
&br;
&br;
view_col の指定を行うことにより、そのビューの列に指定し...
ことを保証できます。~
ビューでの列名指定の順番は、SELECTで指定した列名リスト...
それは前方一致指定となりますので、ビュー内のすべての列名...
いるとは限りません。~
&br;
view_col による列には、出力された2つの列を結合する式を...
することが出来ます。その式は、1つの値を返す式でなければ...
要素を返す式であってはなりません。また、ビューに式を含む...
は必ず必要となります。~
※式で使われる列は、すべて事前に宣言されたものでなければな...
&br;
指定するSELECTでは、ORDER BYを使用することは出来ません。~
&br;
元の列指定に SELECT * 〜の指定を使用した場合、ビュー内...
での順番と同じになります。~
&br;
WITH CHECK OPTION を有効にすることにより、ビューで行の...
時に、事前にデータベースエンジンがチェックを行うことが出...
WITH CHECK OPTIONは、リードオンリーであるビューに対しての...
下さい。~
&br;
※ストアドプロシージャに対するSELECTをベースとしたビューを...
出来ません。~
&br;
※DSQLでは、UNIONが含まれたビュー定義をサポートしていませ...
ビューを作成する場合は、埋め込みSQLを使用してください。~
&br;
更新可能なビューの場合は以下の条件を満たしている必要が...
条件が1つでも満たされない場合は、リードオンリーとなりま...
-1つのテーブルまたは別のビューのサブセットであること。
-元となるテーブル中でビューの定義から外された列は、すべて...
可能であること。
-ビューのSELECT文には、サブクエリ、DISTNICT、HAVING、集計...
ユーザー定義関数(UDF)、ストアドプロシージャを含まないこと。
&br;
※リードオンリーのビューでも、ユーザー定義の参照制約、トリ...
インデックスなどにより更新することは可能です。~
&br;
**用例 [#m1235847]
すべて isql での例です。~
&br;
-更新可能なビューを作成しています。
CREATE VIEW SNOW_LINE (CITY, STATE, SNOW_ALTITUDE) AS
SELECT CITY, STATE, ALTITUDE
FROM CITIES WHERE ALTITUDE > 5000;
&br;
-ネストしたクエリを使用したビューです。
CREATE VIEW RECENT_CITIES AS
SELECT STATE, CITY, POPULATION
FROM CITIES WHERE STATE IN
(SELECT STATE FROM STATES WHERE STATEHOOD > '1-JAN...
&br;
-一連の動作例です。更新可能なビューに WITH CHECK OPTION ...
によるチェックを通らないものを入力できないようにします。
--WITH CHECK OPTION 付きのビューを作成します。
CREATE VIEW HALF_MILE_CITIES AS
SELECT CITY, STATE, ALTITUDE
FROM CITIES
WHERE ALTITUDE > 2500
WITH CHECK OPTION;
--WITH CHECK OPTION が指定されているので、次の挿入は失敗...
INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)
VALUES ('Chicago', 'Illinois', 250);
--次のような挿入は成功します。
INSERT INTO HALF_MILE_CITIES (CITY, STATE, ALTITUDE)
VALUES ('Truckee', 'California', 2736);
--WITH CHECK OPTIONを指定したビューを更新するとき、ビュー...
に合致しない行を更新することは出来ません。次のような更新...
UPDATE HALF_MILE_CITIES
SET ALTITUDE = 2000
WHERE STATE = 'NY';
&br;
-2つのテーブルを結合しているので、リードオンリーのビュー...
CREATE VIEW PHONE_LIST AS
SELECT EMP_NO, FIRST_NAME, LAST_NAME, PHONE_EXT, LOCAT...
FROM EMPLOYEE, DEPARTMENT
WHERE EMPLOYEE.DEPT_NO = DEPARTMENT.DEPT_NO;
&br;
**参照 [#ze152b84]
[[CREATE TABLE>CREATE TABLE#create_table]] , [[DROP VIE...
GRANT , [[INSERT>INSERT#insert]] , REVOKE , [[SELECT>SELE...
[[UPDATE>INSERT#update]]~
&br;
すべての情報を得るには、Data Definition Guide の views ...
下さい。
&br;
&br;
----
&br;
&br;
&aname(drop_view);
*DROP VIEW [#e777b0b5]
ビュー定義をデータベースから削除します。
SQL,DSQL,isqlで使用できます。~
**構文 [#k8d3332c]
DROP VIEW name;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|削除したい、既存のビューの名前です。|
&br;
**詳細の説明 [#g25b4ca6]
DROP VIEW により、ビューが他のビューやストアドプロシー...
により現在使用されていない場合に限り、ビューをデータベー...
出来ます。~
&br;
ビューを削除できるのは、作成者、SYSDBAユーザー、およびO...
持ったユーザーのみです。~
&br;
**用例 [#w0da92e9]
ビューを削除します。
DROP VIEW PHONE_LIST;
&br;
**参照 [#lf240d8f]
[[CREATE VIEW>#create_view]]~
&br;
&br;
----
&br;
&br;
&aname(recreate_view);
*RECREATE VIEW [#v9ecfa70]
既存のビューを破棄せずに、同じ名前で再作成できます。
SQL,DSQLで使用できます。~
&br;
構文は[[CREATE VIEW>#create_view]]とまったく同一です。~
&br;
使用中のビューを再作成しようとすると失敗します。~
&br;
&br;
&br;
----
&br;
&br;
&aname(create_generator);
*CREATE GENERATOR [#r5b46c82]
データベースで使用するジェネレータを宣言します。
SQL,DSQL,isql で使用可能です。~
この文書は、公開されているIB6のSQLレファレンスを基とし...
各リリースノートにおける追加内容に関して反映・統合されて...
**構文 [#w20b3116]
CREATE GENERATOR name;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|ジェネレータの名前です。データベースで一意である必...
&br;
**詳細の説明 [#s13999f8]
CREATE GENERATOR により、データベースにジェネレータを宣...
0とします。ジェネレータは、組込み関数GEN_ID()を使用した列...
連続した番号を生成します。ジェネレータは、行を特定する番...
PRIMARY KEYに、ユニークな番号を付与するためによく使用され...
&br;
データベースには、多数のジェネレータを宣言することが出...
はデータベース内でグローバルなオブジェクトであり、どのト...
でも更新することが出来ます。また、そのように複数のトラン...
使用された場合でも、同じ値が割当てられないことが保証され...
&br;
GEN_ID()を呼び出す書込み時のトリガ、プロシ−ジャ、SQL文...
変更する場合、SET GENERETOR を使用します。~
&br;
**用例 [#q2ff28fd]
-isqlでの使用例です。EMPNO_GENというジェネレータを宣言し...
なかで GEN_ID() を呼び出すようにしています。SET TERM は、...
変更する文です。
NEW.RMPNOの値は 1から始まり、その後は1づつ加算されていき...
CREATE GENERATOR EMPNO_GEN;
COMMIT;
SET TERM !! ;
CREATE TRIGGER CREATE_EMPNO FOR EMPLOYEES
BEFORE INSERT POSITION 0
AS BEGIN
NEW.EMPNO = GEN_ID(EMPNO_GEN, 1);
END
!!
SET TERM ; !!
&br;
**参照 [#c64c1164]
[[GEN_ID()>組込み関数一覧#gen_id]] , [[DROP GENERETOR>#...
[[SET GENERATOR>#set_generator]]~
&br;
&br;
&br;
----
&br;
&br;
&aname(drop_generator);
*DROP GENERATOR [#l89f9b0b]
既存のジェネレータをデータベースから削除します。
SQL,DSQL,isql で使用可能です。~
この文書は、1.5.1までのリリースノートにおける追加内容に...
されています。~
**構文 [#x28628c9]
DROP GENERATOR name;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|削除を行いたい、既存のジェネレータの名前です。|
&br;
**詳細の説明 [#h0d4124d]
DROP GENERETOR により、既存のジェネレータをデータベース...
これにより確保されていたストレージのエリアは解放され、次...
再利用可能となります。
**用例 [#xa278d48]
ジェネレータの削除を行います。
DROP GENERATOR EMPNO_GEN;
**参照 [#z2db553e]
[[CREATE GENERATOR>#create_generator]]~
&br;
&br;
----
&br;
&br;
&aname(set_generator);
*SET GENERATOR [#i5ba0f1b]
既存のジェネレータに、新しい値をセットします。
SQL, DSQL, isqlで使用できます。~
**構文 [#o117bf93]
SET GENERATOR name TO int;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|name|既存のジェネレータの名前です。|
|int|ジェネレータに設定したい値です。設定可能な範囲は、整...
&br;
**詳細の説明 [#m1fcfb23]
SET GENERETOR により、作成済みのジェネレータの値の初期...
できます。ジェネレータは、GEN_ID()関数により連続したユニ...
します。新しく作成し、SET GENERETOR により初期化を行って...
の開始値は、0となります。~
&br;
int は、ジェネレータにセットする新しい値です。挿入や更...
のためにGEN_ID()関数を呼び出すと、GEN_ID()関数で指定した...
インクリメントされた数値を返します。~
SET GENERATOR で開始値を 0 にセットし、GEN_ID()のステッ...
最初の GEN_ID() での呼び出しで返る値は 1 となります。~
&br;
''重要''
PRIMARY KEY、UNIQUE 制約が設定された列への値設定に使用...
ジェネレータに値をセットするとき、新設定値が適当なもので...
行と同じ値が生成され、新しい挿入や更新が失敗する場合があ...
下さい。~
&br;
**用例 [#o5929c33]
isqlでの例です。ジェネレータの値を1,000に設定します。次...
をステップ値 1 で行った場合、得られる値は 1,001 となります。
SET GENERATOR CUST_NO_GEN TO 1000;
&br;
**参照 [#f8692804]
[[CREATE GENERATOR>#create_generator]] ,
CREATE PROCEDURE , CREATE TRIGGER ,
[[GEN_ID()>組込み関数一覧#gen_id]]~
&br;
&br;
&br;
----
&br;
&br;
&aname(create_shadow);
*CREATE SHADOW [#udaafb4c]
データベースの複製をいくつか作成します。コピーは非同期...
SQL,DSQL,isqlで使用できます。~
情報が少ないため、IB6 の Data Definition Guide 、Operat...
情報を元に、独自かつ大幅に補足しました。~
**構文 [#lc6de236]
CREATE SHADOW set_num [AUTO | MANUAL] [CONDITIONAL]
'filespec' [LENGTH [=] int [PAGE[S]]]
[<secondary_file>];
<secondary_file> = FILE 'filespec' [<fileinfo>] [<second...
<fileinfo> = LENGTH [=] int [PAGE[S]]
| STARTING [AT [PAGE]] int [<fileinfo>]
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|set_num|シャドウセットの番号を表す正の整数。以降の指定す...
|AUTO|省略時のデフォルト指定です。指定を行うと、シャドウ...
|~|・すべての接続やアクセスは成功します。|
|~|・シャドウに対するすべての参照が削除され、シャドウファ...
|MANUAL|指定を行うと、シャドウが利用可能になる、もしくは...
|CONDITIONAL|プライマリ(主)なシャドウが利用できなくなった...
|'filespec'|シャドウファイルの完全なパス名とファイル名で...
|LENGTH [=] int [PAGE[S]]|追加するシャドウファイルのサイ...
|secondary_file|セカンダリ(二次)シャドウファイルのパス名...
|STARTING [AT [PAGE]] int|セカンダリシャドウファイルの、...
&br;
**構文 [#t2dbb595]
CREATE SHADOW により、二次的な記憶装置にいくつかのデー...
作成することによって、(記憶装置の故障などが原因である)デ...
が不可能になるという事態を防ぎます。そのデータベースコピ...
と呼ばれ、1つまたはいくつかのファイルで構成されます。各...
一意な整数の番号が振られます。~
シャドウの作成は、データベースの排他アクセスを必要とし...
行うことが出来ます。~
&br;
ディスクのシャドウは以下の3つのコンポーネントから成り...
-シャドウ化するデータベース
-システムテーブルのRDB$FILES。(シャドウファイルのリストと...
その他の情報を格納)
-シャドウセット。1つまたはいくつかのシャドウファイルから...
&br;
&br;
CREATE SHADOW が実行されると、データベースに最も最近接...
アプリケーションのためにシャドウを設置します。シャドウセ...
いくつかのファイルで構成されます。ディスク装置に故障が発...
データベース管理者(DBA)は、シャドウセットをデータベースと...
ディスク上のシャドウを活性化します。
(訳注:gfixコマンドなどの管理ツールにより活性化できます)。
もし CONDITIONAL が指定された場合は、データベース管理者(D...
活性化によりデータベースの交代を行うときに、データベース...
シャドウが設置されます。~
&br;
データベースのサイズがシャドウを作成するディスクに納ま...
secondary_file 指定を行うことにより、複数ファイル構成のシ...
定義できます。複数ファイル構成のシャドウファイルは、各々...
に格納することも出来ます。~
&br;
※既存のディスクシャドウにセカンダリファイルを追加したい場...
で一度削除した後に、CREATE SHADOW により所望するファイル...
シャドウを再作成することにより実現します。~
&br;
シャドウファイルは、Windows 等のNFS以外のシステムにおい...
と同じホストに設置する必要があります。ファイルの指定にホ...
マッピングされたドライブを指定することは出来ません。~
UNIX/Linuxでは、NFSでマウントされたディレクトリに設置す...
しかし、(障害以外に排他アクセス問題などの)NFSに関するトラ...
にはシャドウが永遠に失われる危険があります。そのため、こ...
ではありません。~
&br;
データベースのシャドウファイルは、データベースファイル...
使用できなくなる場合があります。例えば、ディスク障害、ネ...
過失による削除などの理由です。~
AUTO/MANUALの指定を行うことにより、シャドウで異常が発生...
できます。指定を省略した場合、AUTOを指定したものとみなさ...
-AUTO指定~
シャドウの操作が不可能となった場合でも、データベースへ...
継続出来ます。~
オリジナルのシャドウを作成するときに CONDITIONAL 指定が...
は、新しいシャドウが自動的に作成されます。指定を行わなか...
シャドウを作成する必要があります。~
-MANUAL指定~
障害時のデータベース連続運用の保証よりも、(データベース...
信頼性と継続性を重視するために)シャドウ処理の継続性が重要...
MANUAL指定によるマニュアルモードは非常に有効です。マニュ...
シャドウの操作が不可能な状態になると、以後のデータベース...
となります。~
データベースに接続できるようにするためには、データベー...
シャドウファイルの削除とそれらへの参照を削除し、新しいシ...
ければなりません。~
&br;
シャドウを作成するときに CONDITIONAL 指定を行った場合、...
シャドウとなり、データベースの交代が行われるときに自動的...
を作成します。これにより、シャドウ処理は自動継続します。~
条件付のシャドウにおいてシャドウが自動作成されるのは、...
のいずれかまたは両方の場合です。
-データベースファイル本体またはいずれかのシャドウファイル...
状態に陥った場合
-ハードウェア異常のため、シャドウがデータベースの処理を引...
**用例 [#w6c23f04]
すべて、isqlでの例です。~
-シングル構成(employee.shd)のシャドウファイル(シャドウセ...
CREATE SHADOW 1 AUTO 'employee.shd';
-シングル構成(employee.shd)、AUTO、CONDITIONAL指定のシャ...
(シャドウセット2)を作成します。
CREATE SHADOW 2 CONDITIONAL 'employee.shd' LENGTH 1000;
-マルチファイル構成のシャドウセットを作成します。
--セカンダリファイルの開始ページを指定しています。
CREATE SHADOW 3 AUTO 'employee.sh1'
FILE 'employee.sh2' STARTING AT PAGE 1000
FILE 'employee.sh3' STARTING AT PAGE 2000;
--プライマリや最終以外のセカンダリファイルのサイズを指定...
CREATE SHADOW 4 MANUAL 'employee.sdw' LENGTH 1000
FILE 'employee.sh1' LENGTH 1000
FILE 'employee.sh2';
&br;
**シャドウの活性化(障害時の交代) [#m9d19150]
この項は、Data Definition Guideの、Activating a shadow...
います。~
&br;
データベースが何らかの理由で使用不可能になったときは、...
を活性化することによりデータベースのオペレーションを再開...
「SYSDBAユーザー」または「データベースの所有者」としてロ...
gfixコマンドに、-active (または -a)オプションをつけて実行...
実現されます。~
&br;
''重要'' シャドウを活性化する前に、メインデータベースが...
いるかを忘れずにチェックしましょう。メインデータベースが...
あるときにシャドウが活性化されると、その前後や最中にメイ...
接続しているアプリケーションなどにより、シャドウが不適当...
ありえます。~
&br;
gfix でシャドウを活性化する場合には、シャドウのプライマ...
1つ指定します。(マルチファイル構成のシャドウの場合も同...
例えば、employee.fdb というデータベースのシャドウ(emplo...
する場合、次のようなコマンドを実行します。ちなみに、通常...
ユーザー名やパスワードのオプション指定(-user,-password)も...
gfix -a employee.shd
シャドウの活性化を行った後は、その名前をオリジナルのデ...
に変更することが推奨されています。そして、別のドライブ装...
ならば、新たなシャドウをその別ドライブに作成するべきです。~
**参照 [#e09a39a8]
[[DROP SHADOW>#drop_shadow]]~
&br;
これ以上の情報が欲しい場合は、Operations Guide や Data ...
の using shadows の項を参照して下さい。~
&br;
&br;
&br;
----
&br;
&br;
&aname(drop_shadow);
*DROP SHADOW [#ybc21306]
データベースのシャドウを削除します。
SQL,DSQL,isqlで使用できます。~
情報が少ないため、IB6 の Operation Guide からの情報を元...
補足しました。~
**構文 [#l7cad425]
DROP SHADOW set_num;
&br;
※ DSQLで使用する場合、終端文字のセミコロンは不要です。
isql及びC/C++の埋め込みSQLでは行の終わりを示すために終端...
&br;
&br;
|引数|説明|h
|set_num|既存のシャドウセットを識別するための、正の整数番号|
&br;
**詳細の説明 [#jcf6262b]
DROP SHADOW により、シャドウセットを削除してシャドウ処...
isql で SHOW DATABASE コマンドを打ち込むことにより、デ...
シャドウセットを参照できます。~
&br;
シャドウの削除を行うと、メタデータの削除と同時にシャド...
も行われます。そのため、削除を行った場合は、これを回復さ...
なります。しかし、シャドウは単にメインデータベースのコピ...
ほとんど問題となりません。~
&br;
シャドウを削除できるのは、作成者、SYSDBA ユーザー、また...
所有するユーザーのみです。~
&br;
**用例 [#v09c6d3e]
isqlで、データベースのシャドウセットを削除する例です。
DROP SHADOW 1;
&br;
**参照 [#ibf87e7d]
[[CREATE SHADOW>#create_shadow]]~
&br;
ページ名:
新規
名前変更
ホーム
一覧
検索
最終更新
バックアップ
ヘルプ
最終更新のRSS