- ベストアンサー
MYSQLのオートナンバーに関して質問です。
MYSQLのフィールドで フィールド名 int(6) UNSIGNED ZEROFILL No auto_increment とすると 000001 000002 ・・ と、自動で増加するようになると思います。 ところで、もし、 M000001 M000002 ・・ と、「M」+「自動増加数値」 となるフィールドを作成する方法などありましたら、 ご教授ください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まいど、paz777です。 現象を見ると、オートナンバーはINSERT命令を受けた 後、実際に処理する段階で割り当てられるようですね。 さて、どうしましょうか? う~ん・・・ max関数って使用できませんか? t1の最大値を求めてそれに+1した値が次の番号だと 思います。 (ってこれを使うとオートナンバーの使用目的が 変わってしまいますが・・・) ところで'M'を付与したい理由って何でしょうか? 理由によってはフィールドを新設するのは意味ない かもしれませんので。
その他の回答 (1)
- paz777
- ベストアンサー率47% (77/163)
こんにちは。 MYSQLについてはあまり詳しくはありませんが、 オートナンバーは数字型(int型)である以上、"M"などの 文字列は格納することはできないと思います。 従って、"M"を付与したい時は、 1.別フィールドを新設して"M"を格納する。 (このフィールドとオートナンバーで主キーを設定?) 2.オートナンバーはそのままで、取得した後に"M"を付ける。 3.文字型(chr型?)のフィールドを新設して、プログラム等で"M"+増分値を設定する。 っていずれかの方式をご検討下さい。 何かあれば、補足して下さい。 ではでは。。。
お礼
paz777さん、有難うございます。 早速試してみます。 Mというフィールドをわざと用意してあげるのですね。
補足
testテーブルにt1フィールド(オートインクリメント6桁zerofill)とt2(M000002など)を作成して、 INSERT INTO test set t2 = CONCAT('M',t1) とやってみると、m000000となってしまい、 どうも、思うとうりになりませんでした。 もし、ヒントなどお持ちでありましたら、ご教授ください。 よろしくお願い致します。
お礼
paz777さんすみません。 ご迷惑お掛けしています。 insert時にオートナンバーが割り当てられているようです。 なるほどMAX関数を使う方法で求めたあとプログラム側でコードを作成する方法ですね。 やってみます。 Mをつけるのは、顧客番号をオートナンバーでわりあてていたのですが、海外事業部サイトができて、そこの顧客番号には先頭にMをつけようということになった次第です。 オートナンバーがユニークなコードを作成するのに最も手軽なものですから。 ちょっと執着してしまっています。 ご回答有難うございました。