<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="topic_template.xsl"?>
<topic>
<category>Statement</category>
<classification>SQL-DDL</classification>
<ref_entry>CREATE GENERATOR</ref_entry>
<creator date="2004/05/09 00:00:00">T.Hayashi</creator>
<modified />
<definition>新規のジェネレータを作成します。</definition>
<structure>
  <sql>
   <syn>CREATE</syn><syn>GENERATOR</syn><var>generator_name</var>
  </sql>
</structure>
<arguments>
  <argument>
  <name><var>generator_name</var></name>
  <description>ジェネレータ名</description>
  </argument>
</arguments>
<description>
CREATE GENERAOTR文は、新しいジェネレータを作成します。ジェネレータは、一連の一意な整数値を必要とする場合に利用するもので、トリガーと組み合わせてオートナンバー型を実現すること等に使用されています。<br />
ジェネレータのデフォルト値は0に設定されています。<br />
ジェネレータ名はデータベースで一意でなくてはなりません。他のオブジェクトとは名前が重複しても構いませんが、わかりにくいので、GEN_hogehoge等と命名することをお勧めします。<br />
ジェネレータの値は<keyword name="sql_gen_id">GEN_ID()</keyword>関数によって取り出されますが、複数のトランザクションから取り出す場合にも値が重複することはありません。もっとも、gen_id()関数は、ジェネレータ名と増分値を引数として取りますので、増分値を0にすれば同じ値だけを取り出すことも可能です。<br />
ジェネレータの値は<keyword name="sql_set_generator">SET GENERATOR</keyword>文によって再設定することが可能です。<br />
増分値にマイナスを設定することも出来るので、<keyword name="sql_set_generator">SET GENERATOR</keyword>文を使用しなくても、<keyword name="sql_gen_id">GEN_ID()</keyword>関数によってジェネレータの値を指定した値に設定することが可能です。この方法はトリガー／ストアドプロシージャでも使えます。<br />
</description>
<examples>
 <example>
  <description>新しいジェネレータを作成。</description>
  <samplecode>CREATE GENERATOR GEN_hogehoge;</samplecode>
 </example>
</examples>
<see_also>
  <keyword name="sql_drop_generator">DROP GENERATOR</keyword>
  <keyword name="sql_gen_id">GEN_ID()</keyword>
  <keyword name="sql_set_generator">SET GENERATOR</keyword>
</see_also>
</topic>
