ORACLE-シーケンス(SEQUENCE)

2101 ワード

連続する数値を自動的に増減することで、
返されるオブジェクト
テーブルを作成するときは、通常、プライマリ・キーが数値(記事番号、商品番号、登録番号...)に割り当てられます.これらの数値番号のオブジェクトを自動的に指定できます.

形式

SQL>CREATE SEQUENCE 시퀀스명
 INCREMENT BY 한번에 증감할 양(DEFAULT : +1)
 START WITH 시작값 (DEFAULT: 0 )
 cache 여부

シーケンス関数

  • コンピュータまたはセッションをシャットダウン、再起動または再接続する場合も、
  • は保持されます.
    NEXTVAL:Next Value,以下の値を得る
    SQL> CREATE SEQUENCE test_seq;
    시퀀스가 생성되었습니다.
    SQL>SELECT test_seq.NEXTVAL FROM DUAL;
    -->この関数は数値を返します(実行するたびに増分値を返します).

    CURRVAL:Current Value、現在値を取得
    SQL>SELECT test_seq.CURRVAL FROM DUAL;
  • シーケンス:SQL>DESC USER SEQUENCES管理
  • SQL> SELECT sequence_name, last_number FROM user_sequences;

    なぜ私たちは21に数字を返さなかったのですか?
    -DBの立場では、数値計算とリターンのタスクが重いので、20シーケンスを繰り上げて、1つずつ持って帰ります!
    ex)メンバーテーブルで使用するシーケンスの作成
    SQL> CREATE SEQUENCE MEMBER_SEQ;
    
    시퀀스가 생성되었습니다.
    表に数値を入れるときは、数値ではなくシーケンスNEXTBALに数値を入れます.
    SQL> INSERT INTO member
      2  (num, name, addr)
      3  VALUES( member_seq.NEXTVAL, '김구라', '노량진');
    同じものを追加し続ける
    SQL> select * from member;

    このように数字は自動的に少なくなりました!
  • は、1回経過したシーケンスの値を返すことができません.
    (3を削除して追加する場合は、3ではなく4を追加します)
    あ、シーケンスは変更できません!
  • オプションをシーケンスにループ(ポーリング値:開始1、増加1)

    SQL> CREATE SEQUENCE TEST_SEQ
      2  START WITH 10    --> 시작값 지정
      3  INCREMENT BY 10;    --> 증가값 지정