私の主キーであり、単なるintフィールドであるIDフィールドがあります。
行未満ですが、今度は誰かがサインアップするたびに11800089、11800090など...それが(310,311,312)の順序に従うことができるように戻ってくるようにします。
ありがとう!
ALTER TABLE tbl AUTO_INCREMENT=310;
ただし、IDを繰り返す必要はありません。数値がこれほど高い場合、彼らはどういうわけかそのようになりました。低いID番号にデータを関連付けないようにしてください。
http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
より迅速な方法があるかもしれませんが、これは、IDを再作成していることを確認するための方法です。
MySQLまたは他のSQLサーバーを使用している場合、以下を行う必要があります。
TRUNCATE
または 'Empty'テーブルid
列をauto_increment
として再作成しますこれにより、既存の行のIDが破壊されるため、これらが重要な場合、実行可能なオプションではありません。
PHPを使用しているため、mysqlを使用していると推測します。次のようなステートメントでauto_incrementをリセットできます。
alter table mytable autoincrement=301;
ただし注意してください-auto incの値が重複すると物事が壊れるので
テーブルの自動インクリメントカウンターは、次の2つの方法で(再)設定できます。
既に説明した他の人と同様に、クエリを実行することにより:
_ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;
_
ワークベンチまたは他の視覚的なデータベース設計ツールを使用します。 Workbenchでそれがどのように行われるかを示しますが、他のツールでもそれほど変わらないはずです。目的のテーブルを右クリックして、コンテキストメニューから_Alter table
_を選択します。下部には、テーブルを変更するために使用可能なすべてのオプションが表示されます。 Options
を選択すると、次のフォームが表示されます。
次に、画像に示すように、フィールド_Auto increment
_に目的の値を設定します。これにより、基本的に最初のオプションに示されているクエリが実行されます。
Mysqlはidに対してselect maxを実行し、次を設定すると信じています。テーブルのIDを目的のシーケンスに更新してみてください。あなたが持っている問題は、それらがリンクされている場合、fkの更新にカスケードを配置する必要があるということです。私の頭に浮かぶクエリは次のとおりです。
UPDATE Table SET id=(SELECT max(id)+1 FROM TAble WHERE id<700)
700は、11800090より小さく、WHERE id> 0の300近くです。
あなたがどこにも入れないとmysqlの苦情があると思います
私は同様の問題で遊んでいて、この解決策を見つけました:
SET @newID=0;
UPDATE `test` SET ID=(@newID:=@newID+1) ORDER BY ID;
SET @c = (SELECT COUNT(ID) FROM `test`);
SET @s = CONCAT("ALTER TABLE `test` AUTO_INCREMENT = ",@c);
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
同様の状況にある人の助けになることを願っています!