2011-01-20 4 views
5

私は、自動インクリメント列を持つテーブルを持っています。私は行の1つを1000に設定し、もう一度触れることはありませんが、今度は1000に設定しました。自動インクリメントは1001から始まり、1からの開始を拒否します。これを回避する方法はありますか?多数の値がすでに存在する場合、MySQL auto_incrementをリセットしますか?

+0

どう代わりに0に設定するでしょうか? :) –

+0

もしあなたが*これを動作させることができたら、自動インクリメントが再び1000に達すると何が起こると思いますか? –

答えて

3

簡単で短い答え:これはできません。

可能であれば、自動インクリメントを1で開始して1000行を挿入するとどうなりますか? 「重複キー」のために最後の文字を挿入できませんでした。

idが変更されずに覚えやすいという既定のエントリが必要な場合は、そのために0を使用しないでください。あるいは、もしあなたが本当に1000を使う必要があれば、他の列を1001から始めることの問題は何ですか?

+0

彼はすべきではありません。私の答えを見てください。 –

+0

これは私の答えを編集するajrealだった、私は "できない"と書いた - そして、今、私はその編集をロールバックした – oezi

7

あなたがすることはできません。

は、 新しい行に使用する AUTO_INCREMENTカウンタの値を変更するこれを行うには:

ALTER TABLE T2はAUTO_INCREMENT =値;

の値を の値より小さく設定することはできません。 MyISAMの場合、 の値が AUTO_INCREMENTカラムの現在の最大値 の値以下であれば、値は現在の最大値+1にリセットされた です。 InnoDBの場合、 列の現在の最大値よりも小さい値の場合、エラーは発生せず、現在のシーケンス値の値は変更されません( )。

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

0

あなたは、外部テーブルとしてMySQLにリンクMS Accessを使用することができ、そしてあなたは、Excel(まず、あなたがアレンジする必要があるからコピーペーストを経由してMS Accessから自動インクリメントテーブルのフィールドの値を変更することができますExcelの自動インクリメントの値)。

1

あなたは1000年に他の行のIDを持っていないと仮定すると、あなたは、あなたが簡単に更新コマンドを使用することができ、テーブルの下に行を挿入することができます。

UPDATE table.column SET id = 1000 WHERE id = current_id; 

は、idはあなたの自動インクリメント列であると仮定すると、 。そして、current_idは、その行が挿入されているidに置き換えてください。

0

あなたは、次のステートメントを使用することができます。

UPDATE tbl SET id=1000 WHERE id=current_id; 
ALTER TABLE tbl AUTO_INCREMENT=1001; 
関連する問題