PHP、MySQL、phpMyAdminを使用した既存のデータベースがあります。
ユーザーが私のWebサイトでメンバーになると、5桁の番号を使用して、ユーザーに一意のメンバーシップ番号を作成するシステムが必要です。たとえば、83773。メンバーの番号だけが必要なことを除いて、ランダムなパスワードを生成するようなものだと思います。このID番号は、各メンバーに固有でなければなりません。
ユーザーテーブルで主キーをauto_incrementに設定し、10000から開始し、メンバーが登録されるたびに自動インクリメントするように設定することは可能ですか?
また、プライマリキーID番号に達する最大数はありますか?
これは、プライマリキーID番号をメンバーシップ番号として使用するための信頼できる安全な方法ですか?
列の自動インクリメントを作成する手順があります。 phpMyAdminのバージョンは3.5.5ですが、確かではありません。
Table> 構造タブ> アクションをクリック変更 ppoupウィンドウで左にスクロールしてA_Iをチェックします。また、None for Defaultを選択したことを確認してください
PhpMyAdminで、問題のテーブルに移動し、「操作」タブをクリックします。左側の[テーブルオプション]で、現在のAUTO_INCREMENT値を設定できます。
単純なMySQLクエリを実行し、自動インクリメント番号を任意の値に設定するだけです。
ALTER TABLE `table_name` AUTO_INCREMENT=10000
最大値に関しては、私が知る限り、最大値は存在せず、そのような数を制限する方法もありません。
ID番号を主キーとして設定し、intを自動インクリメントすることは、完全に安全であり、一般的な方法です。 PHPを使用して特定の形式でメンバーシップ番号を生成し、挿入する前に番号を確認するなどの代替手段がありますが、 私個人 プライマリIDのauto_inc値を使用します。
PhpMyAdminで、テーブル内のフィールドを自動インクリメントに設定し、行を挿入してそのフィールドの値を10000に設定すると、そこから続行されます。
@AmitKB、手順は正しいです。このエラーは
クエリエラー:#1075-不正なテーブル定義。自動列は1つのみで、キーとして定義する必要があります
最初にフィールドをキーとしてマークすることで解決できます(プライマリラベルのキーアイコンを使用)、他のキーがない場合は機能しない可能性があります。
これは、wp_terms
、wp_termmeta
、およびwp_term_taxonomy
テーブルのすべてのIDがAUTO_INCREMENT
に設定されていないためです。
これを行うには、phpmyadminに移動し、関係データベースwp_terms
テーブルをクリックし、構造タブをクリックします。右側にA_I(AUTO_INCREMENT)
という名前のタブが表示され、チェックして保存します(これを行うだけです)最初のオプションでは、wp_term
の場合は、term_id
に対してのみ実行します。
問題を解決するwp_termmeta
とwp_term_taxonomy
についても同じことを行います。
最大値を設定することはできません(大きな数値を保持できないデータ型を選択することを除き、要求している制限があるものはありません)。挿入後にLAST_INSERT_ID()で確認して、新しく作成されたメンバーのIDを取得し、大きすぎる場合はアプリケーションコードで処理します(たとえば、メンバーを削除して拒否します)。
なぜ上限が必要なのですか?