首页 > 解决方案 > SQL Server 中的数字格式

问题描述

我正在尝试在我的 SQL Server 表中创建一个唯一 ID。ID 包含年份和递增的数字,

2020-000001, 2020-000002它会在第一年开始时重新开始计数,例如当 2021 年进入时。有谁知道怎么做?

标签: sql-server

解决方案


使用 id 是一种普遍接受的标准做法,并且理论表明字段必须是原子的。根据定义,您的唯一键是复合键,因为它由年份和序列号组成。

不过,您需要一个主键,我建议给定的主键必须是数字。这样做有明显的好处,为了简单起见,我现在不详细介绍它们。

但是,我了解您需要拥有该唯一标识符,您始终可以计算该标识符(通过计算比该记录更早创建的记录并在其中添加一个),但这会表现得很糟糕。因此,在这种情况下,对范式理论稍作妥协并使用由年份和序列号组成的复合字段并使用序列来始终确定您需要的值是有意义的。在每年年初,您可以重新启动序列

现在,您可以为记录创建一个插入前触发器,它将计算年份并连接您描述的格式的字符串并将该值设置为您的列。一般来说,开票需要这种东西,您可以为该字段创建索引以进行快速搜索,但是,我再次建议创建另一个将作为主键的数字字段。


推荐阅读