20240516
昨日は意味のわからないORACLEのドキュメントを読んでいて、何の意味もなかった。もっと地に足がついたものを読むことにする。
データベーステーブルにどうやって一意のIDを振るかという話なのだが、どうやらSEQUENCEというものを使うのがいいらしい。
CREATE TABLE t1 (id NUMBER);
INSERT INTO t1 (id) VALUES (my_seq.NEXTVAL);
INSERT INTO t1 (id) VALUES (my_seq.NEXTVAL);
COMMIT;SELECT * FROM t1;
ID
----------
9
102 rows selected.
SQL>
でも、これってデータ入力のたびにmy_seq.nextvalってただ打ち込んでいればいいのかな。なんかの拍子にリセットされたりしない?
いや、リセットされるのは逆に意味わからんか。データ全部リセットされたら大変なことや。
How to Use Sequence Values
When you create a sequence, you can define its initial value and the increment between its values. The first reference to NEXTVAL returns the initial value of the sequence. Subsequent references to NEXTVAL increment the sequence value by the defined increment and return the new value. Any reference to CURRVAL always returns the current value of the sequence, which is the value returned by the last reference to NEXTVAL.
多分その理解で大丈夫な感じがする。そうか。データ入力のたびにmy_seq.nextvalをinsertすれば自動で1ずつ大きい番号が割り振れるのか。
今日はこの辺で。