2011-06-29 11 views
0

アルファエレメントと数値を組み合わせたMySQLで自動インクリメント機能を使用できますか?複合(英数字)プライマリキーと自動インクリメント

私は、QAb99、QAb101、QAd9003などのようなキーを持つ既存のシステムを持っています。最大数字部分は1から9999までですが、文字はQAで始まり、QAaからQAdまでの範囲ですが、最終的にはQAd9999 QAe1などへ

SQLまたはSQL(つまりPHPスクリプト)の外部で新しいキーを生成することを管理する方が良いですか?

ありがとうございました。

+0

public function random_id_gen($length) { //the characters you want in your id $characters = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ'; $max = strlen($characters) - 1; $string = ''; for ($i = 0; $i < $length; $i++) { $string .= $characters[mt_rand(0, $max)]; } return $string; } 
可能重複) –

+0

@fbas:MyISAMを気にしない場合は、複合auto_incrementingキーを使用できます。この質問の回答を見てください:http://stackoverflow.com/questions/5455436/creating-primary-key-based-on-date/5455513#5455513 –

答えて

0

私は少し前にこれを尋ねました。 MySQLはこれを残念ながらやっていません。私はそれを愛するだろうが、それだけではありません。あなたはそれを行うことができますPHPで。例:[MySQLのオートインクリメント英数字の主キー??(http://stackoverflow.com/questions/6444355/mysql-auto-incrementing-alpha-numeric-primary-keyの

0

MySQLの自動インクリメントは常に数値です。カップルは、あなたが取ることができるアプローチがあります。

  • トリガー
  • 使用MySQLの自動インクリメントを使用して、英数字キーで自動インクリメントを実装して、あなたのアプリを持っているあなたのアプリで
  • を独自のインクリメントを実装表示のために数字を英数字に変換します。
  • 同様に、ビューを使用してMySQLを変換します。 (トリガの代わりに-のサポート私はMySQLを信じないように、これは、一方通行になります。http://bugs.mysql.com/bug.php?id=16525を参照してください)あなたはおそらく実現したよう

を、あなたは数にあなたの順序を変えるとバックすることができます。 'a'から 'z'は0から250,000までです。もしあなたがダブルに行くなら、それは260,000です。あなたは10,000を掛けたベース26システムを持っています。

関連する問題