SQL Server 中的复合字段,是否存在?

md1*_*337 2 sql-server

我正在设计一个供 Web 应用程序使用的表,我的框架要求主键是代理键。但我还需要一个额外的字段,它将是其他 2 个字段的组合。换句话说:

Id -> Primary key
OrderNumber
OrderDate
UniqueOrderNumber -> a composite of OrderNumber and OrderDate
Run Code Online (Sandbox Code Playgroud)

UniqueOrderNumber 应该是由 OrderNumber 和 OrderDate 合并生成的字符串。这个新字段随后将用于某些需要唯一 OrderNumber 的查询。

我想避免在应用程序中处理这个逻辑,因为我觉得这应该是数据库的工作。有没有办法让数据库通过连接 OrderNumber 和 OrderDate 的值来自动生成这个 UniqueOrderNumber 字段?

Mik*_*Fal 6

您可以为此利用计算列。所以你的创建表看起来像:

CREATE TABLE foo
(ID int not null,
 OrderNumber int not null,
 OrderDate datetime not null,
 UniqueOrderNumber AS 
   (CONVERT(varchar(20),OrderNumber) + ":" + CONVERT(varchar(20),OrderDate,112))
)
Run Code Online (Sandbox Code Playgroud)

SQL 小提琴示例