2009-11-27 2 views
32

私のテーブルでtbphotos私は100のレコードを持っていた、私は今、私は私の主キーが1から開始しない参照してくださいデータエントリを再開したいが、それは101から始まる、 "MySQLの管理者" で -I作業mysqlのプライマリキーをリセットしますか?

おかげ

答えて

64

alter table foo AUTO_INCREMENT = 1

+1

すべての回答に感謝します。 – Kaveh

23

あなたは、このように自動インクリメントをリセットすることができます。

ALTER TABLE tablename AUTO_INCREMENT = 1 

しかし、あなたはオートインクリメントの値に依存している場合は、あなたのプログラムは非常に壊れやすいです。プログラムを動作させるためにレコードに連続した番号を割り当てる必要がある場合は、別の列を作成し、この目的でデータベースの自動インクリメントIDを使用しないでください。

+7

自動インクリメント値を使用すると、プログラムが壊れやすくなる理由を説明できますか? – Ben

2

レコードを手動で削除する代わりにTRUNCを使用すると、プライマリキーがリセットされます。

+0

TRUNCVATEは、INNODBテーブルのauto_idをリセットしません。 – Slashterix

+1

@Slashterix - ドキュメントでは特に指定しません:http://dev.mysql.com/doc/refman/5.7/en/truncate-table.html ...編集:この回答とコメントは何歳ですか? –

+0

@パリスヴァーニーありがとう、あなたは正しいです。ここで説明した動作を混乱させていました。http://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html#innodb-auto-increment-initialization – Slashterix

-1
DBCC CHECKIDENT (yourTable, RESEED, 0); 

これは私のために働いた:)

+0

これはSQLサーバーですが、質問は私のMySQLに尋ねられました。 – Donnie

0

を以下のコードあなたは既にデータベースにいくつかのデータを持っているが、データを削除せずに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; 
関連する問題