【入門編】 シーケンス操作関数 – PostgreSQL

こんにちは!データベースの世界へようこそ。
PostgreSQLを触っていると、必ずと言っていいほど出会うのが「シーケンス」という仕組みです。

「IDを自動的に1, 2, 3…と振ってくれる便利機能」というのは聞いたことがあるかもしれませんが、いざ「今の値ってどう確認するの?」「ちょっとリセットしたいんだけど!」という場面になると、少しだけ腰が重くなったりしませんか?

今日は、そんなシーケンス操作のキホンである`nextval()`、`currval()`、`setval()`について、難しい言葉抜きでサクッと解説しますね。

—

シーケンスは「整理券発行機」だと思えばいい

まず、シーケンスをイメージしてみましょう。銀行や郵便局にある「整理券発行機」を想像してみてください。

ボタンをポチッと押すと、「次は10番です」と書かれた紙が出てきますよね。次に押すと「11番」。誰もが迷わずに順番通りに並べるように、データベースが自動的に番号を払い出してくれる。あれがまさにシーケンスの正体です。

この「整理券発行機」を操作するリモコンボタンが、今回紹介する3つの関数なんです。

—

1. nextval():迷わず「次の番号」をもらうボタン

一番よく使うのがこれです。
`nextval(‘シーケンス名’)` と書くと、整理券発行機のボタンを押しに行くのと同じ動きをします。

  • 役割: 今の番号を1つ進めて、その新しい番号を教えてくれる。
  • イメージ: 「すみませーん、次の方どうぞ!」と言って、新しい番号札をピッと発行する感覚です。

これを実行するたびに、データベースの中のカウンターが確実に「1」ずつ増えていきます。

—

2. currval():今の状況をそっと確認する

`currval(‘シーケンス名’)` は、ちょっと控えめな関数です。

  • 役割: 「今、最後に発行した番号っていくつだっけ?」と確認する。
  • イメージ: 整理券発行機の表示板をチラッと見て、「あ、今は15番まで出てるんだな」と確認する感じです。

注意点がひとつだけ。`nextval()` を一度も呼び出していないセッションで使うと、「まだ何も発行してないよ!」とPostgreSQLに怒られてしまいます。あくまで「自分(あるいは自分の接続)が最後に発行した番号」を見るためのもの、と覚えておいてくださいね。

—

3. setval():強制的に「番号を書き換える」魔法

最後は少し強力な `setval(‘シーケンス名’, 100)` です。

  • 役割: 整理券の番号を強制的に「100番」から再スタートさせる。
  • イメージ: 営業終了後に、カウンターの数字を無理やり「0」に戻したり、キリよく「1000」から再開させたりする操作です。

例えば、データの移行作業などで「続きの番号から振りたいんだよなぁ」という時、この関数で「次は1001から始めて!」と指示を出せます。かなりパワフルなので、使うときは「本当に今変えても大丈夫かな?」と一呼吸おいてから実行するようにしましょう。

—

まとめ:怖がる必要はありません!

PostgreSQLのシーケンス操作、こうして見ると日常の「整理券」と全く同じですよね。

  • nextval(): 次の番号札を引く(基本!)
  • currval(): 今の番号札を確認する(確認用)
  • setval(): 番号札のカウントを調整する(管理用)

まずは `nextval()` を使って、「お、ちゃんと数字が増えてる!」という感覚を掴んでみてください。データベースを操作する楽しさが、また少し増えるはずですよ。

もし分からないことがあれば、いつでも気軽に聞いてくださいね。それでは、素敵なデータベースライフを!

コメント

タイトルとURLをコピーしました