Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (P ~ Z)

 

TRUNCATE 文

この文は、テーブル定義を削除しないでテーブルからすべてのローを削除するために使用します。

構文
TRUNCATE 
TABLE  [ owner.]table-name
| MATERIALIZED VIEW [ owner.]materialized-view-name
備考

TRUNCATE 文は、テーブルまたはマテリアライズド・ビューからすべてのローを削除します。

注意

TRUNCATE TABLE 文はテーブルからすべてのローを削除するため、同期またはレプリケーションに関連するデータベースでは慎重に使用してください。この文は DELETE 文と似ていますが、WHERE 句を指定できません。ただし、TRUNCATE 文の結果としてトリガは発生しません。さらに、ローの削除はトランザクション・ログに入力されないため、同期またはレプリケーションが行われません。結果として、同期やレプリケーションが失敗するような矛盾が発生する可能性があります。

TRUNCATE 文を実行した後、オブジェクトのスキーマとすべてのインデックスは、DROP 文が発行されるまで引き続き存在します。スキーマ定義と制約はそのまま残り、トリガとパーミッションは有効なままです。

table-name には、ベース・テーブルまたはテンポラリ・テーブルの名前を指定できます。

TRUNCATE TABLE を使用すると、次の基準のすべてが満たされている場合に、高速方式のテーブル・トランケーションが実行されます。

  • そのテーブルへの外部キーも、そのテーブルからの外部キーも存在しない。

  • TRUNCATE TABLE 文がトリガ内で実行されない。

  • TRUNCATE TABLE 文がアトミック文の中で実行されない。

高速トランケーションが実行される場合、個々の DELETE はトランザクション・ログに記録されません。また、このオペレーションの前後に COMMIT が実行されます。スナップショット・トランザクション内では高速トランケーションを使用できません。スナップショット・アイソレーションを参照してください。

即時テキスト・インデックスが構築されているテーブルか、または即時ビューから参照されているテーブルで TRUNCATE TABLE を使用しようとすると、トランケーションが失敗します。即時テキスト・インデックス以外のインデックスとマテリアライズド・ビューでは、このようなことは発生しません。ただし、従属するインデックスやマテリアライズド・ビューのデータをトランケートしてからテーブルで TRUNCATE TABLE 文を実行し、その後、インデックスとマテリアライズド・ビューをリフレッシュすることを強くおすすめします。TRUNCATE 文TRUNCATE TEXT INDEX 文を参照してください。

パーミッション
  • テーブル所有者であるか、DBA 権限またはテーブルに対する ALTER パーミッションが必要です。

  • ベース・テーブルとマテリアライズド・ビューの場合、TRUNCATE 文は、操作がアトミックであるため (すべてのローが削除されるか、まったくされないか)、テーブルへの排他的なアクセスが必要です。つまり、事前に開かれている、トランケートされるテーブルを参照するカーソルを閉じ、COMMIT または ROLLBACK を発行して、テーブルへの参照を解除します。

  • テンポラリ・テーブルの場合、各ユーザはデータの独自のコピーを所有しているため、TRUNCATE 文を実行するときに排他的アクセスは不要です。

関連する動作
  • マテリアライズド・ビューをトランケートする場合は、ビューのステータスを未初期化に変更します。マテリアライズド・ビューのステータスとプロパティを参照してください。

  • TRUNCATE 文は、トリガ削除を実行しません。

  • COMMIT は TRUNCATE 文の実行前後に実行されます。

  • ローの個々の削除はトランザクション・ログには記録されません。したがって、TRUNCATE オペレーションはレプリケートされません。SQL Remote レプリケーションまたは Mobile Link リモート・データベースでは、この文を使用しないでください。

  • テーブルに DEFAULT AUTOINCREMENT または DEFAULT GLOBAL AUTOINCREMENT と定義されたカラムがある場合、トランケーション操作はそのカラムの次に使用可能な値をリセットします。

参照
標準と互換性
  • SQL/2003   Transact-SQL 拡張。

Departments テーブルからすべてのローを削除します。

TRUNCATE TABLE Departments;