①$s->query("DELETE FROM tbj0"); ②$s->query("ALTER TABLE tbj0 AUTO_INCREMENT=1"); 以上ですが
①$s->query("DELETE FROM tbj0"); ②$s->query("ALTER TABLE tbj0 AUTO_INCREMENT=1"); 以上ですが ①を削除する場合 ②のALTER TABLEは行削除と仮定した場合 AUTO_INCREMENT=1"なので一番行~順番に行削除していく との意味でしょうか? よろしくお願いいたします。
どうもすみません! 参考書にありますね! ほんのわずかですが。 ①は「レコード全体の削除」 ②は「連続番後の値の初期化」 なので ぶっちゃけ 掲示板の「タイトル」のみプログラムです。 tbj0はMySQLなので mysql> CREATE TABLE tbj0(guru INT AUTO_INCREMENT PRIMARY KEY,sure VARCHAR(30),niti DATETIME,aipi VARCHAR(20)); 以上を削除する場合 AUTO_INCREMENTを初期化する プロセスまでは必要ないとは思うのですが、少し気になります。 できれば 詳しく知りたいです。 よろしくお願いいたします。
MySQL・43閲覧
ベストアンサー
AUTO_INCREMENTはINSERTするたびに+1してユニークなキー値を生成してくれる機能ですが、空きのない連番を保証するものではありません。 (1)INSERTで生成された最大値は、DELETEしても戻せない。 (2)INSERTで生成された最大値は、ロールバックが発生しても戻らない。 (3)INSERTでオートクリメントによらない最大値になるキー値を指定して格納すると、次のオートクリメント値はその値+1になる。 空きのない連番といった厳密な値が必要な場合は、採番用のテーブルをユーザー側で作るようにMySQLのマニュアルにも書かれています。
1人がナイス!しています
>以上を削除する場合 AUTO_INCREMENTを初期化する プロセスまでは必要ないとは思う ここで言う「削除」とは、何を指してますか? 表の削除(DROP TABLE)ならAUTO_INCREMENTは表毎なので、存在そのものがなくなります。
質問者からのお礼コメント
超助かります。 今後ともよろしくお願いいたします。
お礼日時:5/20 23:36