テーブルおよびデータを削除します。
Synopsis
DROP TABLE table
[RESTRICT | CASCADE] [%DELDATA | %NODELDATA]
DROP TABLE コマンドはテーブルを削除します。テーブルを削除するには、%DROP_TABLE 管理者特権、または指定されたテーブルに対する DELETE オブジェクト特権が必要です。これらの特権は
GRANT コマンドによって付与されます。
既定では、
DROP TABLE はテーブルのデータも削除します。このデータ削除設定は、テーブル・ベースまたはシステム全体でオーバーライドできます。
テーブルの削除時に、
DROP TABLE に %NODELDATA オプションを指定すると、テーブル・データが自動的に削除されるのを防止できます。既定のシステム構成設定では、テーブル・データは削除されます。テーブル・ベースでデータの削除を指定するには、システム全体の既定の設定でテーブル・データを削除しないように設定して、
DROP TABLE に %DELDATA オプションを指定します。
テーブル・データを削除するかどうかのシステム全体の既定は、
Caché 構成マネージャを使用して設定できます。このためには、[詳細] タブの [SQL] オプションを選択し、以下の構成設定を表示します。
DDL DROP TABLE がテーブルのデータを削除する 既定は はい です。テーブル定義の削除時に、
DROP TABLE でテーブル・データを削除しない場合は、このオプションを いいえ に設定します。
削除対象のテーブルを参照する別テーブルに外部キー制約が定義されている場合、そのテーブルは削除できません。参照されているテーブルを削除する前に、それを参照しているすべての外部キー制約を削除する必要があります。これらの外部キー制約を削除せずに
DROP TABLE オペレーションを実行すると、SQLCODE -320 エラーが返されます。
外部キー制約での既定の動作は、RESTRICT キーワード・オプションと同じです。この制約では、CASCADE キーワード・オプションはサポートされません。
存在しないテーブルを削除しようとすると、
DROP TABLE は既定で SQLCODE -30 エラーを発行します。しかし、
Caché 構成マネージャのオプションを設定して、システム全体で既定をオーバーライドできます。このためには、[詳細] タブの [SQL] オプションを選択し、以下の構成設定を表示します。
存在しないテーブルの DDL DROP を許可する 既定は いいえ です。存在しないテーブルに対して
DROP TABLE の処理をせず、エラー・メッセージも発行しない場合は、はい に設定します。
以下の埋め込み SQL 例は、"Employees" という名前のテーブルを作成し、後でそれを削除しています。この例では、テーブルの削除時に、このテーブルに関連付けられているデータを削除
しないことを指定しています。
&sql(CREATE TABLE Employees (
NAMELAST CHAR (30) NOT NULL,
NAMEFIRST CHAR (30) NOT NULL,
STARTDATE TIMESTAMP,
SALARY MONEY))
WRITE !,"Created a table"
/*
&sql(SQL code using Employees table)
*/
&sql(DROP TABLE Employees %NODELDATA)
WRITE !,"Deleted a table"