0

int フィールドがあるテーブルがあります。このフィールドには乱数を入力する必要があり、一意である必要があります。最善の解決策は何ですか?乱数を生成してテーブルに存在するかどうかを確認する必要がありますか? ところで、ASP.NET と C# を使用して Web アプリケーションを開発しています。

4

4 に答える 4

2

本当にランダムにする必要がありますか?一意の整数値が必要な場合は、Identityを使用してください。このリンクを確認してください

編集:乱数(BigInt)の場合、これを試すことができます:

SELECT ABS(CAST(CAST(NEWID() AS VARBINARY(5)) AS Bigint)) as UniqueNo

ここで見つけました

于 2012-05-26T10:40:13.880 に答える
0

Front End使うことからC#

Guid.NewGuid().ToString("N") //Replaces all - will Empty values. 
                               Final value will be numeric

データベースから

newid()

これらのテクニックは両方とも、ユニークな結果をもたらします。

于 2012-05-26T11:15:53.350 に答える
0

http://msdn.microsoft.com/en-us/library/system.random.aspxを試して乱数を生成し、データベースにクエリを実行して値が存在するかどうかを確認してください。'int field' = 'random number' の行を選択し、@@rowcount = 0 かどうかを確認することで、それを判断できるはずです。

于 2012-05-26T11:35:42.417 に答える
0

GUID を使用:

public string GetRandomGUID(int length)
{
  // Get the GUID
  string guidResult = System.Guid.NewGuid().ToString();

  // Remove the hyphens
  guidResult = guidResult.Replace("-", string.Empty);

  // Make sure length is valid
  if (length <= 0 || length > guidResult.Length)
    throw new ArgumentException("Length must be between 1 and " + guidResult.Length);

  // Return the first length bytes
  return guidResult.Substring(0, length);
}
于 2012-05-26T10:31:01.047 に答える