asp.net Web フォームを使用してテーブルにデータを入力したいと考えています。データが入るテーブルに必要な主キー列の値を入力するためのユーザー UI を提供していません。テーブルには、値を自動的に生成しない主キー列 (char) があります。
ユーザーがフォームに入力するたびに一意の値を生成するにはどうすればよいですか?
データを 2 回目に入力するときに、それが実際に一意であることを確認するにはどうすればよいですか?
ありがとう
asp.net Web フォームを使用してテーブルにデータを入力したいと考えています。データが入るテーブルに必要な主キー列の値を入力するためのユーザー UI を提供していません。テーブルには、値を自動的に生成しない主キー列 (char) があります。
ユーザーがフォームに入力するたびに一意の値を生成するにはどうすればよいですか?
データを 2 回目に入力するときに、それが実際に一意であることを確認するにはどうすればよいですか?
ありがとう
このタスクを満たす関数を SQL で作成します。これはコメントにあるようにすべきことではありませんが、SQL で GUID() 関数を使用して一意のキーを生成し、そこから 20 文字を取得してみてください...
テストを行わないと、次のようになります。
CREATE FUNCTION fn_GenerateKey
()
RETURNS CHAR(20)
AS
BEGIN
DECLARE @test CHAR (36)
-- NEWID() will generate a 36 character unique key.
SET @test = NEWID()
-- take the 20 first
SET @test = SUBSTRING(NEWID(),1,20)
--compare @test to the keys already existings to check if you can use it
--Then return @test as the new Key
END
GO
一意のキーを作成するために、さまざまな日時形式を使用できます。日時が繰り返されることはありません。
DateTime を使用したくない場合は、Java の Random 関数を使用して乱数を生成し、それを主キーとして保存する簡単な方法があります。乱数が繰り返されていないかどうかを確認するには、保存されているすべての乱数とその数を比較します主キーとしてテーブルに。