用于生成自动递增字符串主键的存储过程

时间:2015-08-02 11:51:59

标签: c# sql-server

我刚开始使用存储过程,我想创建一个带有常量部分和自动增量部分的字符串主键。例如“REP101,REP102”REP103 ......“。

我发现的其他方法有两列,一个自动增量int列和一个以REP作为前缀的主键列。但我认为如果我使用存储过程会更有效率。

我正在寻找一种检索表中最后一行并使用存储过程返回其密钥的方法,以便我可以在C#代码中使用它。任何其他可以达到相同结果的方式都将受到赞赏。

2 个答案:

答案 0 :(得分:2)

在我看来,如果每个主键值都有' REP'作为前缀,您根本不需要前缀,只需使用Identity列作为主键即可。那么你根本不需要存储过程,这样会更有效率。

答案 1 :(得分:1)

stored procedure会更有效率。您将使用Sequence创建数字部分,然后将其与前缀连接起来。

大致是:

CREATE PROCEDURE GetNextKey
  @key VARCHAR(50) OUT
AS
BEGIN
   SET @key = 'REP' + SELECT NEXT VALUE FOR keys_seq;
END;

但是,为什么要在主键中使用前缀呢?仔细看看你的设计,并确定你真正需要做出区分。您可以简单地使用自动增量ID作为主键,并在必要时在显示点添加前缀。