TRUNCATE
TRUNCATE ステートメントは、表からすべての行を削除します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むことも、 あるいは対話式に実行することもできます。 これは、動的に準備できる実行可能ステートメントです。
権限
このステートメントの権限 ID が保持する特権には、少なくとも以下の 1 つ が含まれていなければなりません。
- ステートメントで識別される表に対して:
- その表の DELETE 特権、および
- 表が入っているライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
IGNORE DELETE TRIGGERS オプションが 指定される場合、ステートメントの権限 ID が保持する特権には以下が含まれていなければなりません。
- 表に対する ALTER 特権、および表に対する *OBJOPR システム権限
表に対して行アクセス制御または列アクセス制御がアクティブになっている 場合、ステートメントの権限 ID が保持する特権には以下が含まれていなければなりません。
- 表についての *OBJOPR および *OBJEXIST システ ム権限。
SQL 特権に対応するシステム権限については、『表またはビューへの権限を検査する際の対応するシステム権限』を参照してください。
構文
.-TABLE-. .-DROP STORAGE--. >>-TRUNCATE--+-------+--table-name--+---------------+-----------> '-REUSE STORAGE-' .-IGNORE DELETE TRIGGERS--------. .-CONTINUE IDENTITY-. >--+-------------------------------+--+-------------------+-----> '-RESTRICT WHEN DELETE TRIGGERS-' '-RESTART IDENTITY--' >--+-----------+----------------------------------------------->< '-IMMEDIATE-'
説明
- table-name
- 削除する行がある表を指定します。この名前は、現行サーバーに存在する表を示すものでなければなりません。また、 カタログ表、ビュー、およびシステム期間テンポラル表を示すものであってはなりません。
- DROP STORAGE または REUSE STORAGE
- 表に割り振られている既存のストレージをドロップするか、再利用するかを指定します。
- DROP STORAGE
- 表に割り振られているすべてのストレージが解放され、使用可能になります。 これはデフォルトです。
- REUSE STORAGE
- 表に割り振られているすべてのストレージは、その表に引き続き割り振られますが、ストレージは空と見なされます。
- IGNORE DELETE TRIGGERS または RESTRICT WHEN DELETE TRIGGERS
- 表に削除トリガーが定義されている場合の処理を指定します。
- IGNORE DELETE TRIGGERS
- 表に定義されている削除トリガーは、切り捨て操作では活動化されないことを指定します。これはデフォルトです。
- RESTRICT WHEN DELETE TRIGGERS
- 表に削除トリガーが定義されている場合はエラーを戻すことを指定します。
- CONTINUE IDENTITY または RESTART IDENTITY
- ID 列値の生成を処理する方法を指定します。
- CONTINUE IDENTITY
- 表に ID 列が存在する場合、生成される次の ID 列の値は、TRUNCATE ステートメントが実行されなかった場合に生成される次の値に進みます。 これはデフォルトです。
- RESTART IDENTITY
- 表に ID 列が存在する場合、生成される次の ID 列値は、その ID 列が定義されたときに指定された初期値 です。
- IMMEDIATE
- 切り捨て操作は即時に処理され、取り消しできないことを指定します。
- 切り捨てられた表は、同じ作業単位で使用できるように直ちに使用可能になります。 ROLLBACK ステートメントは、TRUNCATE ステートメントの実行後に実行できますが、切り捨て操作は取り消されず、表は、切り捨てられた状態のままになります。 例えば、TRUNCATE IMMEDIATE ステートメントの実行後に表に対して別のデータ変更操作が実行され、その後で ROLLBACK ステートメントが実行された場合、切り捨て操作は取り消されませんが、その他のデータ変更操作はすべて取り消されます。
- いずれかのセッションで、表に対してオープンしているカーソルがあるか、表にロックがかかっている 場合、切り捨て操作は実行できません。
- IMMEDIATE が無指定の場合、ROLLBACK ステートメントは切り捨て操作を取り消せます。
注意
参照整合性: 指定される 表を参照制約の親表とすることはできません。
削除行数: SQL 診断領域 内の ROW_COUNT 条件領域項目 (または SQLCA 内の SQLERRD(3)) は、 切り捨て操作の場合は -1 に設定されます。表から削除された行の総数は戻されません。
表に行が存在しない場合、SQLSTATE 値「02000」が戻されます。
SQLCA についての説明は、SQLCA (SQL 連絡域)を参照してください。
例
例 1: 既存のトリガーにかかわらず未使用の在庫表を空にし、表に割り振られていたスペースを戻します。
TRUNCATE TABLE INVENTORY
DROP STORAGE
IGNORE DELETE TRIGGERS;
例 2: 既存のトリガーにかかわらず未使用の在庫表を空にしますが、後で再使用できるように、その割り振られていたスペースを保持します。
TRUNCATE TABLE INVENTORY
REUSE STORAGE
IGNORE DELETE TRIGGERS;
例 3: 既存のトリガーにかかわらず未使用の在庫表を永久に空に し (IMMEDIATE オプションが指定されている場合は ROLLBACK ステートメントは切り捨て操作を 取り消せません)、再使用できるように、表に割り振られていたスペースを保持します。
TRUNCATE TABLE INVENTORY
REUSE STORAGE
IGNORE DELETE TRIGGERS
IMMEDIATE;