一尘不染

创建我的自定义唯一密钥

sql

我的SQLServer中有一张表。当前,我正在使用标识列来唯一地标识每条记录,但是我不断变化的需求需要以某种格式(由客户指定)生成的唯一键。我试图通过将唯一的整数(每次插入都会增加)添加到指定的格式,从而从我的应用程序中生成唯一键,我的客户对当前的解决方案不满意。如果我能被引导到一种更好的技术来解决我的问题,而不是当前的解决方案,那将是很好的。

格式如下:

PRN-YEAR-MyAppGeneratedInt

阅读 153

收藏
2021-05-16

共1个答案

一尘不染

基本上,保留当前identity列。这是 识别和管理表中行的最佳方法。

如果客户端需要另一个唯一密钥,则添加它。据推测,它将是一个字符串(假设它具有“格式”)。您可以将密钥创建为生成的列。或者,您可能需要使用触发器来计算它。

通常,即使最终用户从未看到过整数,标识列也最好使用整数。这里有一些优点:

  • 它们对数据库中行插入的顺序进行编码。例如,您可以获取最后插入的行。
  • 它们对于外键引用更有效(因为数字是固定长度的,并且通常比字符串短)。
  • 当需要修复数据时,它们使直接寻址行成为可能。
2021-05-16