テーブルからすべての行を削除する必要がありますが、新しい行を追加するときに、自動インクリメントを持つ主キーIDを、それぞれ0から1から開始します。
テーブルからすべての行を削除する必要がありますが、新しい行を追加するときに、自動インクリメントを持つ主キーIDを、それぞれ0から1から開始します。
回答:
削除せずに、truncateを使用します。
Truncate table XXX
テーブルハンドラーは、最後に使用されたAUTO_INCREMENT値を記憶していませんが、最初からカウントを開始します。これは、通常シーケンス値を再利用しないMyISAMおよびInnoDBにも当てはまります。
ソース。
使用できない場合TRUNCATE(たとえば、外部キーの制約のため)、すべての行を削除した後に変更テーブルを使用して、auto_incrementを再開できます。
ALTER TABLE mytable AUTO_INCREMENT = 1
DELETE FROM tablename;(しかし、FK制約があるときにはうまく仕事に行くされていません-参照stackoverflow.com/a/5452798/507761を)
テーブルに外部キーがある場合、私は常に次のコードを使用します。
SET FOREIGN_KEY_CHECKS = 0; -- disable a foreign keys check
SET AUTOCOMMIT = 0; -- disable autocommit
START TRANSACTION; -- begin transaction
/*
DELETE FROM table_name;
ALTER TABLE table_name AUTO_INCREMENT = 1;
-- or
TRUNCATE table_name;
-- or
DROP TABLE table_name;
CREATE TABLE table_name ( ... );
*/
SET FOREIGN_KEY_CHECKS = 1; -- enable a foreign keys check
COMMIT; -- make a commit
SET AUTOCOMMIT = 1 ;
ただし、実行時間に違いがあります。ソリンの答えの上を見てください。