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