soikw.log

プログラミングを中心に、のんびりいろいろ備忘録。

OracleでIDの自動採番

メモ。

データベースでIDを使う場合に、シークエンスを使うまではOK。
で、IDのデフォルト値をシークエンスから採番した値を設定したかったのですよ……

CREATE TABLE HOGES (
ID      NUMBER(10) DEFAULT HOGES_ID_SEQ.NEXTVAL NOT NULL,
TITLE   VARCHAR2(300)
);

駄目でした。Oracleでは出来ないようです。
(PostgreSQLではできるらしい。というかserial型を使う?)
なので、データ作成時に値をとってくる事に。

INSERT INTO HOGES(ID, TITLE) VALUES(HOGES_ID_SEQ.NEXTVAL, 'title of hoge');

何か他に一般的なやり方があるような気がしてしょうがない。
SQL書き方ドリル」をちゃんとやろうと思います。