MySQL(Aurora)でauto_inclementを使用しているテーブルのインクリメント値をlast_insert_id()関数で取得する

MySQL(Aurora)でauto_inclementを使用しているテーブルのインクリメント値をlast_insert_id()関数で取得する

プライマリキーに対してauto_inclementを設定しているテーブルがあるとします。

このテーブルにデータをインサートします。empnoはauto_inclementなので、nullを設定すれば値が勝手に設定されます。

empnoにnullを設定しましたが、auto_inclementなのでインサート文が正常に終了します。

レコードが追加されていることを確認します。

auto_inclementで「1234567890123456790」が設定されていることがわかります。次にインサート文を発行すれば「1234567890123456791」となります。

ここで、last_insert_id()関数を使用して現在のauto_inclementの値を確認することができます。

auto_inclementの値をnullではなく、設定するとどうなるか確認してみます。

そうすると、empno=3のレコードが追加されています。が、last_insert_id()関数を見てみると変更がありません。

last_insert_id()を初期化する方法

last_insert_id()関数を初期化するには以下DDLを発行します。

これでlast_insert_id()関数を実行すれば0になります。

これでinsert文を発行すると初期化されるはずなんですが、どうも保持(復元)されてしまっています。

カラムの定義から一旦auto_incrementを外し、再度auto_incrementを設定してからインサートしましたが、それでも値を保持していました。

やはり一旦drop tableしないと消えないようです。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA