如何指定计算列的最大长度

LCJ*_*LCJ 6 sql-server

我正在添加来自三个字段的计算列。它将是一个 VARCHAR 字段。我需要指定计算列的最大长度。我们如何指定这一点。

ALTER TABLE [MyTable] ADD  CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ]
Run Code Online (Sandbox Code Playgroud)

有什么办法可以限制我吗?如果长度超过 10 个字符,我需要提出错误

参考:指定表中的计算列

Mar*_*ith 3

单程

CREATE TABLE [MyTable]
(
[PGM] VARCHAR(50),
[GRP] VARCHAR(50),
[PGMGRPSEQ] VARCHAR(50),
CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ] PERSISTED CHECK (LEN(CustomNumber) <= 10)
)
Run Code Online (Sandbox Code Playgroud)

或者,如果您不想保留计算列,只需添加重复表达式的检查约束。

CREATE TABLE [MyTable]
(
[PGM] VARCHAR(50),
[GRP] VARCHAR(50),
[PGMGRPSEQ] VARCHAR(50),
CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ],
CHECK (LEN([PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ] ) <= 10)
)
Run Code Online (Sandbox Code Playgroud)