我想使用 asp.net 网络表单将一些数据输入到表格中。我没有让用户 UI 输入数据进入的表中所需的主键列的值。该表具有不会自动生成值的主键列 (char)。
每次用户填写表格时,我如何才能生成唯一值?
第二次输入数据时,如何检查它确实是唯一的?
谢谢
我想使用 asp.net 网络表单将一些数据输入到表格中。我没有让用户 UI 输入数据进入的表中所需的主键列的值。该表具有不会自动生成值的主键列 (char)。
每次用户填写表格时,我如何才能生成唯一值?
第二次输入数据时,如何检查它确实是唯一的?
谢谢
如果您不想使用 DateTime,一个简单的方法是使用 Java 的 Random 函数生成随机数并将其存储为主键。要检查随机数是否没有重复,将该数字与已存储的所有随机数进行比较在您的表中作为主键。
在你的 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
您可以使用不同的日期时间格式来创建唯一键。日期时间将永远不会重复。