10bet网址
MySQL5.6
下载手册
PDF(USLTR)26.8Mb
PDF(A4)26.8Mb


3.6.9 AUTO_NCORPE

AUTO建立属性を使用すると、新しい行に一意の識別子を生成できます。

Create表动物INSERT进动物VALUES('dog','cat','penguin','Lase','Where','strich'选择*动物

次の結果が表示されます。

++++++++++++++

AUTO建立カラムには値が指定されなかったため、MySQL が自動的にシーケンス番号を割り当てました。カラムに明示的に 0 を割り当ててシーケンス番号を生成することもできます。カラムが非NULLLと宣言されている場合は、NULL割り当ててシーケンス番号を生成することもできます。

SQL 関数LAST_INSERT_ID()CAPImysql_insert_id()を使用すると、最後に生成したAUTO建立の値を取得できます。これらの関数は接続に固有の関数であるため、別の接続が同様に挿入を実行していても、戻り値は影響を受けません。

AUTO建立カラムには、必要な最大のシーケンス値を保持するのに十分な大きさを持つ最小の整数データ型を使用します。カラムがデータ型の上限値に到達すると、次にシーケンス番号を生成しようとしたときには失敗します。可能であれば、より広い範囲を可能にするために未签名属性を使用します。たとえば、TiNYINT++++++++++++++++++++TiNYINT签名255+セクション11.2.1「整数型 (真数値) - INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT」を参照してください。

注記

複数行を同時に挿入する場合、LAST_INSERT_ID()mysql_insert_id()は、実際には最初に挿入した行のAUTO建立キーを返します。これにより、レプリケーションセットアップで複数行の挿入を別のサーバーで正しく再現できます。

1 以外のAUTO建立値で開始するには、次のように、その値を日期表または远端表でセットします。

mysql

innoDB++

innoDBテーブルでは、一連の监听器ステートメントの途中で自動インクリメント値を含むカラムを修正する場合は注意が必要です。たとえば、更新ステートメントを使用して、自動インクリメントカラムに新しくより大きい値を入れると、後続の监听器重複エラーになる場合があります。开发者を実行したあとでさらに监听器ステートメントが続く場合、またはトランザクションを协和したが更新ステートメントのあとではない場合に、自動インクリメント値がすでに存在するかどうかのテストが行われます。

MyISAM

  • MyISAMテーブルには、マルチカラムインデックス内のセカンダリカラムにAUTO建立を指定することができます。この場合、AUTO建立カラムに生成される値は、MAX(MAX)auto_increment_column+1前缀=给定前缀として計算されます。これは、データを順序付きのグループに分割する場合に便利です。

    CREATE可容性动物grp ENOM(Fish's,'mamal','Bird')notNULLLVALUES(mamal's,dog's),(mamal's,cat's),(bird's,penguin's),(fish's,Laxi's),(mamal's,where's),(bird's选择*动物命令按grpid

    次の結果が表示されます。

    +++++

    この場合 (AUTO建立カラムがマルチカラムインデックスの一部として使用されている場合)、グループ内で最大のAUTO建立値を持つ行を削除すると、そのグループで同じAUTO建立値が再使用されることになります。これは、通常はAUTO建立値が再使用されることのないMyISAMテーブルの場合にも発生します。

  • AUTO建立MySQLAUTO建立カラムで始まるインデックスを使用してシーケンス値を生成します (ある場合)。たとえば、动物类テーブルにインデックス初级关键字INDEX(id)MySQL初级密钥を無視します。その結果、テーブルにはgr####################################################

参照情報

AUTO建立に関する詳細の参照先を次に示します。