gpt4 book ai didi

sql-server - 如何创建唯一的用户 key

转载 作者:搜寻专家 更新时间:2023-10-30 20:21:49 24 4
gpt4 key购买 nike

场景:我有一个相当通用的表(数据),它有一个标识列。此表中的数据已分组(假设按城市)。

用户需要一个标识符才能在纸质表格等上打印。用户只能访问他们的引用数据,因此如果他们为此目的使用标识列,他们将看到奇数(例如,“纽约”用户可能会看到 1,37,2028... 作为列出的键。

理想情况下他们会看到 1,2,3...(或类似的东西)

问题当然是并发性,这是一个网络应用程序,你不能只拥有类似的东西: UserId = Select Count(*)+1 from Data Where City='New York'

有没有人想出任何巧妙的方法来解决这个问题?

已更新 - 从下面的评论来看,我想我想要像下面的 SP 这样的东西。不完全确定递归应该如何在 CATCH block 中工作。

ALTER PROCEDURE [dbo].[DataContainer_Insert] 
@SomeData varchar(max),
@DataContainerId int out
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
BEGIN TRY
SELECT @UserId = MAX(UserId) From DataContainer
INSERT INTO DataContainer (UserId, SomeData)
VALUES (@UserId, SomeData)

SELECT @DataContainerId = scope_identity()
END TRY
BEGIN CATCH
--try again
exec DataContainer_Insert @DataContainerId, @SomeData
END CATCH

END

最佳答案

好吧,如果您在城市和 UserId 上添加跨越唯一性约束(以保证只会有 1 个特定 ID 和城市的实例)。然后你只需要能够处理约束违规(通过重新提交)。

关于sql-server - 如何创建唯一的用户 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2822999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com