如何在同一字段中允许自动生成和用户生成的唯一标识

时间:2013-11-01 12:38:36

标签: sql sql-server

我的Customers表目前有一个名为CustomerCode的唯一标识字段。

当新客户添加到表中时,我希望CustomerCode字段自动生成标识。这很容易实现。

但是,用户可能已经拥有来自先前应用程序或手动记录保存系统的具有唯一标识的客户列表。他们希望将这些客户导入到这个新表中,并保留他们以前的唯一身份CustomerCode。 CustomerCodes是字母数字,例如CUS0157999Z

这样做超出了数据库的作用吗?相反,我是否需要一个前端应用程序来自动生成一个尚未存在的唯一CustomerCode?

新系统和旧系统必须串联运行,因此他们每天都会将客户导入新的Customer表。

2 个答案:

答案 0 :(得分:1)

自动增量不必从1开始。导入客户端数据及其唯一客户代码。在此之后设置自动增量以比客户端更晚的值开始,以区分旧的和新的。

例如,如果客户有超过10万的客户,其ID为100,000到150,000。您可以以1,000,000开始自动增量。

这当然可以提供独特的id生成方法在旧系统和新系统中的一致性。

答案 1 :(得分:1)

您在此处有两个不同的实体 - 客户ID和客户代码。通常,客户ID自动生成为序列号,用于表中数据之间的引用。通常,客户代码是根据某些规则生成的,并具有有意义的价值,例如等级或分类等。

在您的情况下,最好不要将它们混合使用并单独使用。所以添加另一列,比如CustomerCodeImported。在这种情况下,您在应用程序中引用了CustomerCode以及在引用到遗留应用程序时使用的引用代码。如果您需要导入现有客户,这样更可靠 - 您只需更新CustomerCodeImported列的现有记录设置值。