我正在从三个字段中添加一个计算列。这将是一个 VARCHAR 字段。我需要指定计算列的最大长度。我们如何指定。
ALTER TABLE [MyTable] ADD CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ]
有什么办法可以限制它吗?如果长度超过 10 个字符,我需要引发错误
参考:指定表中的计算列
我正在从三个字段中添加一个计算列。这将是一个 VARCHAR 字段。我需要指定计算列的最大长度。我们如何指定。
ALTER TABLE [MyTable] ADD CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ]
有什么办法可以限制它吗?如果长度超过 10 个字符,我需要引发错误
参考:指定表中的计算列
单程
CREATE TABLE [MyTable]
(
[PGM] VARCHAR(50),
[GRP] VARCHAR(50),
[PGMGRPSEQ] VARCHAR(50),
CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ] PERSISTED CHECK (LEN(CustomNumber) <= 10)
)
或者,如果您不想保留计算列,只需添加一个重复表达式的检查约束。
CREATE TABLE [MyTable]
(
[PGM] VARCHAR(50),
[GRP] VARCHAR(50),
[PGMGRPSEQ] VARCHAR(50),
CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ],
CHECK (LEN([PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ] ) <= 10)
)
假设最大长度为 100,则:
ALTER TABLE [MyTable] ADD CustomNumber
AS Ltrim(Substring([PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ] + Space(100), 1, 100))
尝试这个:
CREATE TABLE [MyTable]
(
[PGM] VARCHAR(50),
[GRP] VARCHAR(50),
[PGMGRPSEQ] VARCHAR(50)
)
ALTER TABLE [MyTable] ADD CustomNumber AS [PGM]+'-'+[GRP]+'-'+[PGMGRPSEQ] PERSISTED
GO
ALTER TABLE [MyTable]
ADD CONSTRAINT [MaxLenLimit] CHECK (LEN([CustomNumber]) <= 100)