タグ

Sequenceに関するhatehate331000のブックマーク (4)

  • Oracle表の列に自動採番でユニークな番号を挿入

    <IT技術の処方箋:Oracle表の列に自動採番でユニークな番号を挿入> Oracleのテーブルをつくりました。 ある列に、自動でユニーク(一意)な番号を振りたい時があります。 例えば、購入履歴を記録するテーブルで、「全体の通し番号」みたいな列でしょうか。 このような場合は、シーケンス(sequence)を作成します。 ●例(作成) SQL>create sequence no_seq; これにより、no_seq というシーケンス(オブジェクト)を作成しました。 ●例(利用) SQL>insert into book_table values(no_seq.nextval,'100','book') no_seq.nextval という値をいれると、 シーケンス(オブジェクト)が自動採番してユニークな値をいれてくれます。 ただし、book_tableに、すでに値が入っている場合は、 no_

  • ORACLE/CREATE SEQUENCE編 - オラクルちょこっとリファレンス

    SEQUENCE(シーケンス/順序) シーケンスとは、例えばレコードに一意になる番号を振りたいというような時に、その番号を自動生成してくれるオブジェクトです。 シーケンスを使うと条件に沿った一意の番号を簡単に振ることできます。 シーケンスの作成 シーケンスの作成には、CREATE SEQUENCE句を使用します。 CREATE SEQUENCE構文 CREATE [OR REPLACE] SEQUENCE 順序名 [ START WITH 初期値 ] [ INCREMENT BY 増分値 ] [ MAXVALUE 最大値 | NOMAXVALUE ] [ MINVALUE 最小値 | NOMINVALUE ] [ CYCLE | NOCYCLE ] [ CACHE キャッシュ数 | NOCYCLE ] ; パラメータ 説明

  • SequenceをGeneratedKeyでエミュレート(MySQL+JDBC版)

    名簿テーブルのIDがAUTO_INCREMENTの場合に係り活動テーブルに入れるIDの取得に困ります。 名簿テーブルにデータをINSERTする。(IDは自動生成で1が入ったとする) 自動生成された1を取得するために以下の方法で取得する SELECTを発行する LAST_INSERT_ID()をコールする 係り活動テーブルにデータをINSERTする。 SELECTの場合、MAX関数使った場合はマルチスレッド、マルチプロセスで破綻します。 LAST_INSERT_ID()の場合、発行する順番に気をつければ同一セッション内で値が保持されている・・・? 詳しくはわかりません(´・ω・`) またAUTO_INCREMENTをやめてシーケンステーブルを作成した場合、SELECTは上記と同じ理由で破綻(ロックかけるなら別ですけど。)、LAST_INSERT_IDは上手くいくが、どちらにせよ2往復している

    SequenceをGeneratedKeyでエミュレート(MySQL+JDBC版)
  • Did you reboot?:Mysqlでシーケンスのシミュレーション - livedoor Blog(ブログ)

    Orable,Postgresなどから、MySQLやるハメになったアナタ! まず思うのが、シーケンステーブル (つд⊂)ゴシゴシ (´Д⊂)ナーイ 。゚(゚´Д`゚)゜。ウァァァン 今日、DB移行作業でやるハメになりましたっっ。 ハマったので、メモしておきます。脇の下、軽く汗かいちゃいました。 どうやらLAST_INSERT_IDを使うらしい。 LAST_INSERT_ID(expr)について、公式ドキュメントには下記のようにある。 LAST_INSERT_ID(expr) の引数として expr を指定した場合、引数の値が関数から返され、この値が LAST_INSERT_ID() によって返される次の値として設定される。 うぅ〜む。日語難しい。 試しに、やってみる。 まず、テーブルを作成する。 mysql> CREATE TABLE sequence (i

  • 1