カラム情報にauto_incrementを指定するとデータを入れる度に値が加算されます。
テーブル内のデータを全て消して1から入れ直したいときなどありますよね。
そんなときに、通し番号(シーケンス)をリセットして1からカウントする方法を紹介します。
テーブル作成時にauto_incrementを設定すると番号が保持されているシーケンスデータが作成されます。
それは
SELECT * FROM テーブル名_カラム名_seq;
で見ることができます。
例えば以下のテーブルを作成してデータをいくつか入れてみます。
1 2 3 4 5 6 7 8 9 |
CREATE TABLE test { id SERIAL PRIMARY KEY, name VARCHAR(255) } INSERT ~~~(省略)~~~; |
シーケンスデータとして以下が返ってきます。
1 |
SELECT * FROM test_id_seq; |
last_value | log_cnt | is_called
4 |0 |t
last_valueが現在の通し番号となります。
そしてこの番号をリセットするにはこのように書きます。
SELECT SETVAL (‘テーブル名_カラム名_seq’, 1, false);
上のテーブルの場合は
1 |
SELECT SETVAL ('test_id_seq', 1, false); |
になります。
シーケンスデータを再び見て
last_value | log_cnt | is_called
1 |0 |f
こちらが返って来ればOKです。
is_calledはlast_valueが設定されたかどうかを示しています。
通常、データを入れる場合はlast_valueが加算されてis_calledがtrueになります。
今回はデータを入れる前なので、次にデータを入れる際1を設定するためにis_calledをfalseに指定しています。
以上です。
【ぼくのバンド紹介】shabones(しゃぼんず)
敏感でもろいロックバンドです。是非聴いてください〜(^^)