DROP VIEW
Synopsis
DROP VIEW view-name [CASCADE | RESTRICT]
引数
view-name | 削除するビューの名前。 |
CASCADE RESTRICT | オプション — view-name を参照する他のすべてのビューを削除する場合は CASCADE キーワードを指定します。RESTRICT は、view-name を参照するビューが他に存在するときに SQLCODE -321 エラーを発行する場合に指定します。既定値は RESTRICT です。 |
概要
DROP VIEW コマンドはビューを削除しますが、基となるテーブルやデータは削除しません。
DROP VIEW 操作は、DropView()Opens in a new tab メソッド呼び出しを使用して呼び出すこともできます。
$SYSTEM.SQL.DropView(viewname,SQLCODE,%msg)
特権
DROP VIEW コマンドは特権を必要とする操作です。DROP VIEW を使用する前に、%DROP_VIEW 管理者特権または指定されたビューに対する DELETE オブジェクト特権を持っている必要があります。特権がない場合は、SQLCODE -99 エラー (特権違反) が返されます。%CHECKPRIV コマンドを呼び出すことにより、現在のユーザが DELETE 特権を持っているかどうかを確認できます。$SYSTEM.SQL.CheckPriv()Opens in a new tab メソッドを呼び出すことにより、指定のユーザが DELETE 特権を持っているかどうかを確認できます。適切な特権を持っている場合は、GRANT コマンドを使用して %DROP_VIEW 特権を割り当てることができます。
埋め込み SQL では、以下のように $SYSTEM.Security.Login()Opens in a new tab メソッドを使用して適切な特権を持ったユーザとしてログインできます。
DO $SYSTEM.Security.Login("_SYSTEM","SYS")
&sql( )
$SYSTEM.Security.Login メソッドを呼び出すには、%Service_Login:Use 特権が必要です。詳細は、"インターシステムズ・クラス・リファレンス" の "%SYSTEM.SecurityOpens in a new tab" を参照してください。
存在しないビュー
指定のビューが現在のネームスペースに存在するかどうかを確認するには、$SYSTEM.SQL.ViewExists()Opens in a new tab メソッドを使用します。
存在しないビューを削除しようとすると、DROP VIEW は既定で SQLCODE -30 エラーを発行します。ただし、システム構成を以下のように設定することにより、このエラー報告動作をオーバーライドできます。
-
$SYSTEM.SQL.SetDDLNo30()Opens in a new tab メソッド呼び出し。現在の設定を確認するには、$SYSTEM.SQL.CurrentSettings()Opens in a new tab を呼び出します。これにより、[SQLCODE=-30 エラーの抑制] の設定が表示されます。
-
管理ポータルに進み、システム, 構成, 一般SQL設定 を選択します。[存在しないテーブルまたはビューの DDL DROP を許可する] の現在の設定を表示します。
既定値は “いいえ” (0) です。この設定を推奨します。存在しないビューおよびテーブルに対して DROP VIEW および DROP TABLE の処理をせず、エラー・メッセージも発行しない場合は、“はい” (1) に設定します。
他のビューから参照されるビュー
クエリで他のビューから参照されているビューを削除しようとすると、DROP VIEW は既定で SQLCODE -321 エラーを発行します。これは RESTRICT キーワードの動作です。
CASCADE キーワードを指定すると、クエリで他のビューによって参照されているビューの削除は成功します。さらに、DROP VIEW はそれらの参照しているビューも削除します。Caché で (SQLCODE -300 エラーなどにより) ビューのカスケード削除が一部でも実行できない場合は、いずれのビューも削除されません。
関連付けられたクエリ
ビューを削除すると、自動的にすべての関連クエリ・キャッシュが削除され、%SYS.PTools.SQLQueryOpens in a new tab に保存されているクエリ情報が削除されます。ビューを削除すると、関連する全クエリのためのすべての SQL 実行時統計 (SQL Stats) 情報が自動的に削除されます。
例
以下の埋め込み SQL 例は、"CityAddressBook" という名前のビューを作成し、その後そのビューを削除します。このビューは RESTRICT キーワード (既定) を使用して指定されるので、ビューが他のビューから参照される場合、SQLCODE -321 エラーが発行されます。
&sql(CREATE VIEW CityAddressBook AS
SELECT Name,Home_Street FROM Sample.Person
WHERE Home_City='Boston')
IF SQLCODE=0 { WRITE !,"View created" }
ELSE { WRITE !,"CREATE VIEW error: ",SQLCODE
QUIT }
/* Use the view */
NEW SQLCODE,%msg
&sql(DROP VIEW CityAddressBook RESTRICT)
IF SQLCODE=0 { WRITE !,"View dropped" }
ELSEIF SQLCODE=-30 { WRITE !,"View non-existent",!,%msg }
ELSEIF SQLCODE=-321 { WRITE !,"View referenced by other views",!,%msg }
ELSE { WRITE !,"Unexpected DROP VIEW error: ",SQLCODE,!,%msg }
関連項目
-
"Caché SQL の使用法" の “ビュー” の章
-
"Caché 詳細構成設定リファレンス" で説明されている SQL 構成設定
-
"Caché エラー・リファレンス" にリストされた SQLCODE エラー・メッセージ