ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 


DROP COLLATING SEQUENCE文

指定された照合順番を削除します。

データベースまたはデータベース内のドメインで使用されている照合順番は削除できません。


環境

DROP COLLATING SEQUENCE文は次の環境で使用できます。


形式



引数

collation-name

照合順番の作成時に使用したcollation-name引数をCREATE COLLATING SEQUENCE文に指定します。

IF EXISTS

被参照オブジェクトがデータベースに存在しない場合に、SQLコマンド言語によってエラー・メッセージが表示されないようにします。

使用方法


例1: フランス語の照合順番の作成および削除

次の例では、事前定義された照合順番FRENCHを使用して照合順番が作成されます。その後、SHOW COLLATING SEQUENCE文を使用して定義済の照合順番が表示されます。

次に、DROP COLLATING SEQUENCE文を使用して照合順番が削除されます。SHOW COLLATING SEQUENCE文では、照合順番が存在しないことを示しています。


SQL> ATTACH 'FILENAME personnel';
SQL> CREATE COLLATING SEQUENCE FRENCH FRENCH;
SQL> --
SQL> SHOW COLLATING SEQUENCE
User collating sequences in database with filename personnel
     FRENCH
SQL> --
SQL> DROP COLLATING SEQUENCE FRENCH;
SQL> --
SQL> SHOW COLLATING SEQUENCE
User collating sequences in database with filename personnel
No collating sequences found

例2: ドメインまたはデータベースの定義に使用した照合順番の削除

次の例では、照合順番を使用してデータベースまたはドメインが定義されている場合、照合順番は削除できないことを示しています。


SQL> CREATE COLLATING SEQUENCE SPANISH SPANISH;
SQL> CREATE DOMAIN LAST_NAME_SPANISH CHAR (14)
cont> COLLATING SEQUENCE IS SPANISH;
SQL> --
SQL> SHOW DOMAIN LAST_NAME_SPANISH
LAST_NAME_SPANISH               CHAR(14)
 Collating sequence: SPANISH
SQL> --
SQL> SHOW COLLATING SEQUENCE
User collating sequences in database with filename personnel
     SPANISH
SQL> --
SQL> -- You cannot delete the collating sequence because the
SQL> -- domain LAST_NAME_SPANISH, defined using SPANISH, still exists:
SQL> --
SQL> DROP COLLATING SEQUENCE SPANISH;
%RDB-E-NO_META_UPDATE, metadata update failed
-RDMS-F-COLUSEDFLD, the collating sequence named SPANISH is used in
field LAST_NAME_SPANISH
SQL> --
SQL> -- Delete the domain:
SQL> --
SQL> DROP DOMAIN LAST_NAME_SPANISH;
SQL> --
SQL> -- Now you can delete the collating sequence:
SQL> --
SQL> DROP COLLATING SEQUENCE SPANISH;
SQL> --
SQL> SHOW COLLATING SEQUENCE
User collating sequences in database with filename personnel
No collating sequences found


DROP CONSTRAINT文

指定された制約を削除します。

環境

DROP CONSTRAINT文は次の環境で使用できます。


形式



引数

constraint-name

削除する制約の名前を指定します。

IF EXISTS

被参照オブジェクトがデータベースに存在しない場合に、SQLコマンド言語によってエラー・メッセージが表示されないようにします。

使用方法


例1: 制約の削除

次の例ではSEX_NOT_NULL制約を削除します。


SQL> DROP CONSTRAINT SEX_NOT_NULL;


DROP DATABASE文

データベースを削除します。

Oracle Rdbでこの文が実行されると、SQLではデータベースに関連付けられたデータベース・ルート・ファイルおよび記憶域ファイルがすべて削除されます。

DROP DATABASE文にリポジトリ・パス名を指定するか、PATHNAME引数でアタッチされたデータベースの別名を指定すると、SQLではデータベース定義を格納するリポジトリ・ディレクトリも削除されます。

注意

DROP DATABASE文は慎重に使用してください。DROP DATABASE文の取消しには、ROLLBACK文は使用できません。この文が使用されると、SQLでは、すべてのデータおよびすべての定義が格納されている、データベース・ルート・ファイルおよび記憶域ファイルが削除されます。


環境

DROP DATABAS文は次の環境で使用できます。


形式







引数

ALIAS alias

アタッチされたデータベースの別名を指定します。DROP DATABASE文は、データベース、および別名に関連付けられたすべてのデータベース・ルート・ファイルと記憶域ファイルを削除します。

データベースがPATHNAME引数で宣言されている場合、ROP DATABASE文でも、データベース定義が含まれるリポジトリ・ディレクトリが削除されます。

FILENAME 'attach-spec'

データベースにアクセスするために必要な完全または部分的な情報が含まれる引用符付き文字列を指定します。アタッチ仕様には、.rdbファイルのファイル仕様が含まれます。

DROP DATABASE文は、データベース、およびデータベース・ルート・ファイル仕様に関連付けられたすべてのデータベース・システム・ファイルを削除します。部分的なファイル仕様を使用すると、SQLでは標準のデフォルトが使用されます。DROP DATABASE文は、データベース定義が含まれるリポジトリ・ディレクトリもあるかどうかに関係なく、データベース・ファイルのみを削除します。

literal-user-auth

データベース(特にリモート・データベース)へのアクセスに使用するユーザー名およびパスワードを指定します。

このリテラルにより、DROP DATABASE文でユーザー名およびパスワードの情報を明示的に指定できます。

PATHNAME path-name

データベース定義が保存されているリポジトリ・ディレクトリのリポジトリ・パス名としてフルパス名または相対パス名を指定します。ファイル仕様ではなくパス名を使用して、データベース・ルート・ファイルおよび記憶域ファイルとともにリポジトリからリポジトリ・データベース定義を削除します。「DROP PATHNAME文」も参照してください。

USER 'username'

データベース・システムで権限チェックに使用されるオペレーティング・システムのユーザー名を指定する文字列リテラルを定義します。

USING 'password'

USER句で指定されているユーザー名に対するユーザーのパスワードを指定する文字列リテラルを定義します。

使用方法


例1: ファイルのみの削除

この文では、データベースpersonnel.rdbに関連付けられたデータベースのデータベース・システム・ファイルが削除されます。このデータベースにリポジトリ・ディレクトリに保存されている定義もある場合、このDROP DATABASE文ではその定義は削除されません。


SQL> DROP DATABASE FILENAME personnel;

例2: ファイルおよびリポジトリ定義の削除

データベース・ファイルおよびリポジトリ定義を削除するには、DROP DATABASE文にリポジトリ・パス名を指定する必要があります。この文では、関連付けられたデータベース・ルート・ファイルおよび記憶域ファイル以外に、リポジトリ・ディレクトリCDD$TOP.ACCOUNTING.PERSONNELも削除されます。


SQL> DROP DATABASE PATHNAME CDD$TOP.ACCOUNTING.PERSONNEL;


DROP DOMAIN文

ドメイン定義を削除します。PATHNAME修飾子を使用してデータベースにアタッチしている場合、SQLではドメイン定義もリポジトリから削除されます。

環境

DROP DOMAIN文は次の環境で使用できます。


形式



引数

domain-name

削除するドメインの名前を指定します。

IF EXISTS

被参照オブジェクトがデータベースに存在しない場合に、SQLコマンド言語によってエラー・メッセージが表示されないようにします。

使用方法


例1: 列に参照されないドメインの削除


SQL> --
SQL> -- The following CREATE DOMAIN statement creates a domain
SQL> -- that is not used by any columns:
SQL> --
SQL> CREATE DOMAIN ABCD IS CHAR(4);
SQL> --
SQL> -- The SHOW DOMAINS statement shows domain ABCD at the
SQL> -- top of the list:
SQL> --
SQL> SHOW DOMAINS

User domains in database with filename personnel
ABCD                            CHAR(4)
ADDRESS_DATA_1_DOM              CHAR(25)
ADDRESS_DATA_2_DOM              CHAR(20)
   .
   .
   .
SQL> --
SQL> -- Now delete the domain:
SQL> --
SQL> DROP DOMAIN ABCD;
SQL> --
SQL> -- The SHOW DOMAINS statement shows that the
SQL> -- domain ABCD has been deleted:
SQL> --
SQL> SHOW DOMAINS

User domains in database with filename personnel
ADDRESS_DATA_1_DOM              CHAR(25)
ADDRESS_DATA_2_DOM              CHAR(20)
   .
   .
   .

例2: 列に参照されるドメインの削除

次の例では、ドメインの定義が削除されます。列がドメイン定義を、制約がその列を参照するため、最初に表を変更してからドメインを削除する必要があります。


SQL> --
SQL> -- Attempt to delete the domain SEX_DOM.  Error messages
SQL> -- indicate that the table EMPLOYEES uses the domain
SQL> -- SEX_DOM, so SEX_DOM cannot yet be deleted:
SQL> --
SQL> DROP DOMAIN SEX_DOM;
%RDB-E-NO_META_UPDATE, metadata update failed
-RDMS-F-RELEXI, field SEX_DOM is used in relation EMPLOYEES
-RDMS-F-FLDNOTDEL, field SEX_DOM has not been deleted
SQL> --
SQL> -- Looking at the EMPLOYEES table shows that SEX is the
SQL> -- column that depends on the domain SEX_DOM.  Try
SQL> -- to delete the column SEX; error messages indicate that the
SQL> -- constraint EMP_SEX_VALUES depends on the column SEX:
SQL> --
SQL> ALTER TABLE EMPLOYEES DROP COLUMN SEX;
%RDB-E-NO_META_UPDATE, metadata update failed
-RDMS-F-FLDINCON, field SEX is referenced in constraint EMP_SEX_VALUES
-RDMS-F-RELFLDNOD, field SEX has not been deleted
from relation EMPLOYEES
SQL> --
SQL> -- Delete the constraint EMP_SEX_VALUES:
SQL> --
SQL> ALTER TABLE EMPLOYEES DROP CONSTRAINT EMP_SEX_VALUES;
SQL> --
SQL> -- Because EMP_SEX_VALUES was the only constraint or index
SQL> -- that depended on the column SEX, you can now delete
SQL> -- the column SEX:
SQL> --
SQL> ALTER TABLE EMPLOYEES DROP COLUMN SEX;
SQL> --
SQL> -- The column SEX in the table EMPLOYEES was the only column in
SQL> -- the database that depended on the domain SEX_DOM, so you can
SQL> -- now delete the domain SEX_DOM:
SQL> --
SQL> DROP DOMAIN SEX_DOM;
SQL>


DROP INDEX文

指定した索引定義を削除します。PATHNAME修飾子を使用してデータベースにアタッチしている場合、SQLでは索引定義もリポジトリから削除されます。

環境

DROP INDEX文は次の環境で使用できます。


形式



引数

CASCADE

この索引を使用する任意の記憶域マップを、NO PLACEMENT VIA INDEX記憶域マップに変更するように指定します。

IF EXISTS

被参照オブジェクトがデータベースに存在しない場合に、SQLコマンド言語によってエラー・メッセージが表示されないようにします。

index-name

削除する索引定義の名前を指定します。

RESTRICT

索引がOracle Rdbデータベース内の他のオブジェクトによって参照される場合、その索引の削除を回避します。デフォルトはRESTRICTです。

使用方法


例1: デフォルト・データベースからの索引の削除


SQL> ATTACH 'FILENAME personnel';
SQL> DROP INDEX DEG_COLLEGE_CODE;
SQL> COMMIT;

例2: いずれかのアタッチ・データベースからの索引の削除


SQL> ATTACH 'FILENAME personnel';
SQL> ATTACH 'ALIAS MF FILENAME mf_personnel';
SQL> ATTACH 'ALIAS CORP FILENAME corporate_data';
SQL> SET QUOTING RULES 'SQL99';
SQL> DROP INDEX "CORP.ADMINISTRATION".PERSONNEL.EMP_EMPLOYEE_ID;
SQL> COMMIT;


DROP MODULE文

Oracle Rdbデータベースからモジュールを削除します。

環境

DROP MODULE文は次の環境で使用できます。


形式



引数

CASCADE

SQLで、モジュール内のルーチンを参照するすべてのオブジェクトを無効にし、その後、そのモジュール定義を削除するように指定します。これはカスケード削除と呼ばれます。ルーチンまたは言語セマンティクス依存性のあるストアド・ルーチンで参照されるモジュールを削除する場合、対象となるストアド・ルーチンも無効としてマークされます。

IF EXISTS

被参照オブジェクトがデータベースに存在しない場合に、SQLコマンド言語によってエラー・メッセージが表示されないようにします。

module-name

モジュールの名前を識別します。

RESTRICT

ファンクションまたはプロシージャがOracle Rdbデータベース内の他のオブジェクトによって参照される場合、ストアド・ルーチン定義の削除を回避します。デフォルトはRESTRICTです。

使用方法


例1: Oracle Rdbデータベースからのモジュールの削除


SQL> DROP MODULE employee_salary;

例2: DROP MODULE ... CASCASEアクションの確認

この例は、削除対象のモジュールと、ルーチンやトリガーなどの他のデータベース・オブジェクトの間に依存性が存在する可能性があることを示します。スクリプトでWARN_INVALIDオプションを指定してSET FLAGSを使用すると、データベース管理者には対象となるオブジェクトが通知されます。この場合は、アプリケーション環境に悪影響を及ぼす可能性があるため、ロールバックを使用してDROP MODULE ... CASCADEを取り消します。


SQL> start transaction read write;
SQL>
SQL> create module FIRST_MODULE
cont>     function GET_TIME ()
cont>     returns TIME (2);
cont>     return CURRENT_TIME (2);
cont> end module;
SQL>
SQL> create module SECOND_MODULE
cont>     procedure PRINT_TRACE (in :arg varchar(40));
cont>     begin
cont>     trace GET_TIME(), ': ', :arg;
cont>     end;
cont> end module;
SQL>
SQL> create table SAMPLE_TABLE
cont>     (ident integer,
cont>      descr char(100));
SQL> create trigger SAMPLE_TABLE_TRIGGER
cont>     after insert on SAMPLE_TABLE
cont>     (trace GET_TIME(), ': ', SAMPLE_TABLE.descr)
cont>     for each row;
SQL>
SQL> commit;
SQL>
SQL> set flags 'warn_invalid';
SQL> drop module FIRST_MODULE restrict;
%RDB-E-NO_META_UPDATE, metadata update failed
-RDMS-E-OBJ_INUSE, object "GET_TIME" is referenced by SAMPLE_TABLE_TRIGGER. (usage: Trigger)
-RDMS-E-MODNOTDEL, module "FIRST_MODULE" has not been deleted
SQL> drop module FIRST_MODULE cascade;
~Xw: Trigger "SAMPLE_TABLE_TRIGGER" marked invalid
~Xw: Routine "PRINT_TRACE" marked invalid
SQL>
SQL> rollback;