OracleでMySQLのAutoIncrement



OracleでMySQLのauto_incrementを実現するにはシーケンスと呼ばれるものを利用します。

サンプル

以下の例ではtest_tblのidカラムをauto_incrementにしています。

CREATE TABLE test_tbl (id number, testdata varchar2(255));

CREATE SEQUENCE文でシーケンスを作成します。

CREATE SEQUENCE test_seq
START WITH 1
INCREMENT BY 1
NOMAXVALUE;

この状態で以下のようにnextvalを実行すると自動的にインクリメントされた値をテーブルに入れることができます。

INSERT INTO test_tbl (id, testdata) VALUES(test_seq.nextval, “testdata”);

もっとMySQLに近い動きにしたい人は以下のようにトリガーを仕掛けて、INSERT時に自動的に採番されるようにすると良いでしょう。

CREATE TRIGGER test_trigger
BEFORE INSERT ON test_tbl
FOR EACH ROW
BEGIN
SELECT test_seq.nextval INTO :new.id FROM dual;
END;

参考文献

プロとしてのOracle PL/SQL入門 改訂版 現場で使えるSQL―Oracle/SQL Server対応 (DB Magazine SELECTION) 基本SQLセミナー―MySQL 5.0 for Windows対応

Comments are closed.