2011-06-17 10 views
0

oracleに「自動番号」データ型がないことに驚いています。 MSのアクセスでこのデータ型を持っているので、自動番号データ型を使用する方法はありますか?oracleに「自動番号」データ型があります

+0

大きなRDBMS年代の大半は、 "自動番号" として知られているデータの種類を持っていません。主に自動番号は通常intであるためです。 SQL Serverでは、そのデータ型を魔法の "自動番号"に設定するのではなく、自動的に数値を真似する何か他のことを行います。 –

+0

シーケンスはFARよりも柔軟性が高く、パワフルでスケーラビリティがあります。 –

+0

ANSIというシーケンスがありがたいです。 SQL Server "Denali"は最終的にOracle、PostgreSQL、およびDB2の持つ機能をサポートします。 –

答えて

6

This blog postは、この機能のオプションを説明しています。

重要な要素は以下に引用されていますが、投稿はより深く入ります。

insert into test values(test_seq.nextval, 'voila!'); 

OR

create trigger test_trigger 
before insert on test 
for each row 
begin 
select test_seq.nextval into :new.id from dual; 
end; 
+0

提供されたリンクが開かれていません。 – Adnan

+0

リンクが私のために開き、シーケンスを議論します(トリガーなどによって実装されます) – Harrison

+0

それは私のためにも機能します。引用符を含む答えを更新する。 –

3

I続く

create sequence test_seq 
start with 1 
increment by 1 
nomaxvalue; 

あなたはシーケンスを使用しています。任意の数のシーケンスを持つことができ、それらを使用して任意のテーブルの任意のフィールドに一意の番号を割り当てたり、変数に数値を割り当てるために呼び出すことができます。

SQL> CREATE SEQUENCE demo_seq INCREMENT BY 1 MAXVALUE 999999999999999999999999999 MINVALUE 0 NOCACHE; 

Sequence created. 

SQL> select demo_seq.nextval from dual; 
    NEXTVAL                  
----------                  
     0 

SQL> select demo_seq.nextval from dual; 

    NEXTVAL                  
----------                  
     1 

SQL> select demo_seq.nextval from dual; 
    NEXTVAL                  
----------                  
     2 

SQL> select demo_seq.currval from dual; 
    CURRVAL                  
----------                  
     2 

参考文献:

http://www.techonthenet.com/oracle/sequences.php

http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_6015.htm

+0

なぜnomaxvalueですか? –

+1

NOMAXVALUEは私の特定の例ではもっと意味がありますが、私はこのパラメータが存在することを示したいと思っています(読者が自分のリンクに従わないことにした場合)。 –

関連する問題