sql >> データベース >  >> RDS >> Oracle

12cシーケンス値を使用した列の自動入力

    昨日のブログ投稿で、IDENTITY値を持つテーブルの作成について書きました。しかし、私が気に入っているOracle 12cの新機能は、シーケンスを列のデフォルト値の数値ジェネレーターにすることです。私が何を意味するかを理解するには、次の例を見てください:

    SQL> create sequence test_seq;
    Sequence created.
    SQL> create table test_tab (id number default test_seq.NEXTVAL, val varchar2(20));
    Table created.

    ご覧のとおり、テストテーブルのID列には、作成したシーケンスのNEXTVALを使用するDEFAULT句があります。それでは、テーブルにデータを挿入しましょう。

    SQL> insert into test_tab (val) values ('first row');
    1 row created.
    SQL> insert into test_tab (val) values ('second row');
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> select * from test_tab;
    ID VAL
    ---------- --------------------
    1 first row
    2 second row

    ご覧のとおり、値の入力にはOracleシーケンスが使用されました。一見すると、これにより、データモデラーの作業が楽になります。これは、トリガーをコーディングしてNEXTVALを生成し、この値を列に割り当てるという従来のルートを使用する必要がないためです。ただし、このシーケンスによる列値の自動入力は、値を指定しない場合にのみ機能し、デフォルトのままにします。値を明示的に指定した場合、このメソッドはシーケンスを使用しません。トリガーが適切にコーディングされている場合、列のシーケンスの次の値の使用が強制されます。


    1. PostgreSQLの将来のテーブルに対する特権を付与しますか?

    2. MariaDBでのTO_BASE64()のしくみ

    3. T-SQLを使用して文字列から数値部分を取得するにはどうすればよいですか?

    4. Javaマルチキャストの存続時間は常に0です