我的SQL Server中有一个表。目前,我使用标识列来唯一标识每条记录,但我不断变化的需求需要以特定格式生成的唯一密钥(由我的客户端指定)。我试图通过将一个唯一的整数(在每次插入时递增)附加到指定的格式来生成我的应用程序中的唯一键,我的客户端对我当前的解决方案不满意。如果我可以被引导到更好的技术来解决我的问题而不是我当前的解决方案,那将是很棒的。
格式如下:
PRN-YEAR-MyAppGeneratedInt
您可以创建一个SEQUENCE来满足您在SQL Server 2012中引入的目的。有关SEQUENCE的详细解释可以在here找到。
希望这可以帮助 :)
根据您在评论中指定的格式,我还将为您提供一个示例,说明如何使用序列解决问题:
首先创建一个如下序列:
CREATE SEQUENCE SeqName
AS int
START WITH 1
INCREMENT BY 1
CYCLE
CACHE
接下来,您可以使用此序列在您的应用程序中生成所需的唯一键。
String key= "PRN"+year+SeqValue;
您可以根据需要编写应用程序代码:)
基本上,保持当前的identity
列。这是您识别和管理表中行的最佳方式。
如果客户端需要另一个唯一密钥,则添加它。据推测,它将是一个字符串(假设它具有“格式”)。您可以将密钥创建为生成的列。或者,您可能需要使用触发器来计算它。
通常,对于标识列,整数更好,即使最终用户从未看到它们。这有一些优点:
你可以创建一个Computed Column并只是附加身份
('Custom_'+CONVERT(varchar(10),iden))