- 一个订单表有一个CustomerId列和一个OrderId列。
- 由于某些原因,订单编号不应超过2个字节的长度非常重要。
- 总共将有数百万个订单,这使得2个字节对于全局订单ID来说不够用。
- 一个客户最多只有几千个订单,2个字节足够了。
- 显而易见的解决方案是让(CustomerId,CustomerOrderNumber)成为唯一标识,而不是OrderId本身。
问题在于如何生成下一个CustomerOrderId。最好不要为每个客户创建单独的表(即使它只包含IDENTITY列),以便保持解决方案的上层简单。
问:您将如何生成下一个OrderId,以便(CustomerId,CustomerOrderId)是唯一的,但允许CustomerOrderNumber本身重复?SQL Server 2008是否具有内置功能来执行此操作?
出于缺乏更好的术语,我称之为复合IDENTITY列。