2010-11-20 11 views
0

私は4重要なIDのmysqlの自動インクリメントの開始点と最大値を設定することは可能ですか?

が含まれており、オートID iがautpインクリメント数に制限を設定することを望んでいたもの

ためであるインクリメントその識別をスピードアップするために、Webアプリケーションを作成しています。

例:

受注= 10000000そう数を生成する10メートルの間 -

palletid = 20000000 20メートル19999999から29999999

のProductID = 30000000 30メートル - 39999999

及びこれらのIDの彼らは今利用可能な古い番号を再利用し始めますか?

+0

播種の際にお読みください – CarneyCode

答えて

1

これは、自動インクリメント列の動作とは異なります。

確かに、始点を設定することはできますが、残念ながら、システムに組み込まれていない古い番号を再利用することについての最大値とその部分です。

なぜそれが必要ですか?

自動インクリメント列を使用すると、値そのものを気にする必要はないという一般的な意見があります。確かに、あなたはそれがユニークであることに気をつけますが、実際の値は何か気にしません。値はです。

あなたが気にするので、なぜ気にしますか?なぜ古い番号を再利用する必要がありますか?

システム内のさまざまな項目を識別するために使用するとします。あなたは、ユーザーのために意味ですか?プレフィックスだけを使用するのはなぜですか?注文のためのO123、顧客のためのC123、製品のためのP123など。

+0

私は接頭辞を使用することを考えましたが、私はこれを単純化することを望んでいました。 –

+0

システム内には多くのidがありますが、これら3つはパレットの注文と製品を識別するために使用されます。 –

0

これを行う方法の1つは、データタイプを定義することです。 。 。例えば、小さなintの最大値は127になります。 。

INSERT INTO table VALUES(id) 
(
Case when 
(
    SELECT id FROM table 
    LIMIT COUNT(SELECT * FROM table)-1, 1) >= maximumhere 
) 
then minimumhere 
else MAX(SELECT id FROM table)+1 
) 

これは、遊びもちろん単なる理論である:あなたは、100 incrementationsに自分自身を制限するあなたの開始値が27

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

+0

良いアイデアありがとう。 –

0

いいえに設定されますが、このような何かをしようとしようとしていた場合それを使って...

関連する問題