S-JIS[2026-09-08]
TsurugiのSQLのtruncate tableのメモ。
TsurugiのSQLでテーブルのデータを削除するDDLがtruncate table文。(Tsurugi 1.12.0以降)
truncate table テーブル名
truncateはDDLなので、DMLと並列に実行するのは非推奨。
(truncate後のinsert等は別トランザクションで実行する必要がある)
truncate table test;
プライマリキーを自動採番するテーブル(create tableでgenerated〜as identityを指定したカラムがあるテーブル)に関して、次に採番する値をどうするかを指定するオプションがある。
truncate table テーブル名 [オプション]
| オプション | 説明 |
|---|---|
RESTART IDENTITY |
最初の値に戻す |
CONTINUE IDENTITY |
現在の値を継続する(デフォルト) |
create table truncate_test ( pk int primary key generated always as identity (start 100), value int );
tgsql> insert into truncate_test (value) values(1),(2),(3); tgsql> select * from truncate_test; [pk: INT, value: INT] [100, 1] [101, 2] [102, 3] (3 rows)
tgsql> truncate table truncate_test restart identity; tgsql> insert into truncate_test (value) values(1),(2),(3); tgsql> select * from truncate_test; [pk: INT, value: INT] [100, 1] [101, 2] [102, 3] (3 rows)
tgsql> truncate table truncate_test continue identity; tgsql> insert into truncate_test (value) values(1),(2),(3); tgsql> select * from truncate_test; [pk: INT, value: INT] [103, 1] [104, 2] [105, 3] (3 rows)
tgsql> truncate table truncate_test; -- オプションなし tgsql> insert into truncate_test (value) values(1),(2),(3); tgsql> select * from truncate_test; [pk: INT, value: INT] [106, 1] [107, 2] [108, 3] (3 rows)