【问题标题】:Stored procedure to generate auto incremented string primary key生成自动递增字符串主键的存储过程
【发布时间】:2015-10-24 15:15:57
【问题描述】:

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

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

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

【问题讨论】:

  • 你忘记了问题?

标签: c# sql-server


【解决方案1】:

在我看来,如果每个主键值都以“REP”作为前缀,那么您实际上根本不需要前缀,您可以简单地使用Identity 列作为主键.那么你就完全不需要存储过程了,这样效率会高很多。

【讨论】:

    【解决方案2】:

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

    大概:

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-04
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 2015-05-05
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      相关资源
      最近更新 更多