私のテーブルでtbphotos私は100のレコードを持っていた、私は今、私は私の主キーが1から開始しない参照してくださいデータエントリを再開したいが、それは101から始まる、 "MySQLの管理者" で -I作業mysqlのプライマリキーをリセットしますか?
おかげ
私のテーブルでtbphotos私は100のレコードを持っていた、私は今、私は私の主キーが1から開始しない参照してくださいデータエントリを再開したいが、それは101から始まる、 "MySQLの管理者" で -I作業mysqlのプライマリキーをリセットしますか?
おかげ
alter table foo AUTO_INCREMENT = 1
あなたは、このように自動インクリメントをリセットすることができます。
ALTER TABLE tablename AUTO_INCREMENT = 1
しかし、あなたはオートインクリメントの値に依存している場合は、あなたのプログラムは非常に壊れやすいです。プログラムを動作させるためにレコードに連続した番号を割り当てる必要がある場合は、別の列を作成し、この目的でデータベースの自動インクリメントIDを使用しないでください。
自動インクリメント値を使用すると、プログラムが壊れやすくなる理由を説明できますか? – Ben
レコードを手動で削除する代わりにTRUNCを使用すると、プライマリキーがリセットされます。
TRUNCVATEは、INNODBテーブルのauto_idをリセットしません。 – Slashterix
@Slashterix - ドキュメントでは特に指定しません:http://dev.mysql.com/doc/refman/5.7/en/truncate-table.html ...編集:この回答とコメントは何歳ですか? –
@パリスヴァーニーありがとう、あなたは正しいです。ここで説明した動作を混乱させていました。http://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html#innodb-auto-increment-initialization – Slashterix
を以下のコードあなたは既にデータベースにいくつかのデータを持っているが、データを削除せずに1からIDをリセットしたい場合はベストです。 SQLコマンドでコピーして実行する
ALTER TABLE members DROP ID;
ALTER TABLE members AUTO_INCREMENT = 1;
ALTER TABLE members ADD ID int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
すべての回答に感謝します。 – Kaveh