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;
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;
BEFORE INSERT ON test_tbl
FOR EACH ROW
BEGIN
SELECT test_seq.nextval INTO :new.id FROM dual;
END;
参考文献
|
|
|


