1

プロジェクト ID を (MySql DB に) 保存する必要があるアプリを作成しています。管理者ユーザーは、プロジェクトが作成される前にのみ、ID 番号の形式 (#####、##-####、YY-##-#### など) を設定できる必要があります。粗い。ID も autoinc にする必要があります。通常のユーザーが新しいプロジェクトを作成するとき。

自動インクリメントは、最後のレコードを読み取って 1 を追加することにより、PHP で行う必要があると考えています。

ID 形式はユーザーによって定義されるため、おそらく単一のフィールド (varchar?) である必要があると思います。または、アプリはユーザー定義の形式に対応するために複数のフィールドを作成する必要がありますか? これについて何か考えはありますか?

アイデアを探しています...

4

1 に答える 1

0

前の ID を読み取って 1 ずつ増やすだけの問題は、同じ ID を繰り返し使用するリスクがあることです。検討:

  • 以前のプロジェクトから ID を取得する新しいプロジェクトを作成します。
  • プロジェクト ID を使用し、場合によっては配布します
  • 結局、そのプロジェクトは必要ないと判断し、削除します
  • 新しいプロジェクトを作成します。新しいプロジェクトは、同じソースをインクリメントすることによって導出されるため、削除された古いプロジェクトと同じ ID を持ちます。

これが問題でない場合は、それが解決策です。

それ以外の場合は、これを試すことができます。

  • テーブルに 2 つの列を作成します。1 つは ID 用で、もう 1 つは自動インクリメント整数用です。
  • プロジェクトを作成するときは、ID を追加しないでください。整数値は自動インクリメントします
  • その整数値を取得します (おそらく mysql_insert_id を使用)
  • 自動インクリメントされた整数から生成された ID でプロジェクトを更新します

これはシステムの負担が大きく、ボリュームが非常に多い場合は競合状態が発生する可能性がありますが、プロジェクト ID に一意のインデックスを追加すると、問題が発生する可能性があります。

于 2012-11-30T07:09:41.107 に答える