• ベストアンサー

MYSQLのオートナンバーに関して質問です。

MYSQLのフィールドで フィールド名 int(6) UNSIGNED ZEROFILL No auto_increment とすると 000001 000002 ・・ と、自動で増加するようになると思います。 ところで、もし、 M000001 M000002 ・・ と、「M」+「自動増加数値」 となるフィールドを作成する方法などありましたら、 ご教授ください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • paz777
  • ベストアンサー率47% (77/163)
回答No.2

まいど、paz777です。 現象を見ると、オートナンバーはINSERT命令を受けた 後、実際に処理する段階で割り当てられるようですね。 さて、どうしましょうか? う~ん・・・ max関数って使用できませんか? t1の最大値を求めてそれに+1した値が次の番号だと 思います。 (ってこれを使うとオートナンバーの使用目的が  変わってしまいますが・・・) ところで'M'を付与したい理由って何でしょうか? 理由によってはフィールドを新設するのは意味ない かもしれませんので。

Ants
質問者

お礼

paz777さんすみません。 ご迷惑お掛けしています。 insert時にオートナンバーが割り当てられているようです。 なるほどMAX関数を使う方法で求めたあとプログラム側でコードを作成する方法ですね。 やってみます。 Mをつけるのは、顧客番号をオートナンバーでわりあてていたのですが、海外事業部サイトができて、そこの顧客番号には先頭にMをつけようということになった次第です。 オートナンバーがユニークなコードを作成するのに最も手軽なものですから。 ちょっと執着してしまっています。 ご回答有難うございました。

その他の回答 (1)

  • paz777
  • ベストアンサー率47% (77/163)
回答No.1

こんにちは。 MYSQLについてはあまり詳しくはありませんが、 オートナンバーは数字型(int型)である以上、"M"などの 文字列は格納することはできないと思います。 従って、"M"を付与したい時は、 1.別フィールドを新設して"M"を格納する。   (このフィールドとオートナンバーで主キーを設定?) 2.オートナンバーはそのままで、取得した後に"M"を付ける。 3.文字型(chr型?)のフィールドを新設して、プログラム等で"M"+増分値を設定する。 っていずれかの方式をご検討下さい。 何かあれば、補足して下さい。 ではでは。。。

Ants
質問者

お礼

paz777さん、有難うございます。 早速試してみます。 Mというフィールドをわざと用意してあげるのですね。

Ants
質問者

補足

testテーブルにt1フィールド(オートインクリメント6桁zerofill)とt2(M000002など)を作成して、 INSERT INTO test set t2 = CONCAT('M',t1) とやってみると、m000000となってしまい、 どうも、思うとうりになりませんでした。 もし、ヒントなどお持ちでありましたら、ご教授ください。 よろしくお願い致します。

関連するQ&A