在SQL Server中检查对用户定义类型(不是表)的约束

问题描述 投票:0回答:2

是否可以创建带有检查约束的用户定义类型?

类似的东西:

create type json from nvarchar(max) check isjson(value)=1
sql-server user-defined-types check-constraints
2个回答
0
投票

确定,我可以添加规则。

create rule json_rule
as
    isjson(@range) = 1

GO

CREATE TYPE dbo.[json] FROM nvarchar(max) NULL

GO

EXEC sys.sp_bindrule @rulename=N'[dbo].[json_rule]', @objname=N'[dbo].[json]' , @futureonly='futureonly'

0
投票

您不能如上所述提到的带有约束的用户定义类型。您可以使用包含CHECK约束的列定义表类型。 Read on CREATE TYPE

如果您按照您的建议为列类型定义,则将来可能会删除sp_bind。 Reference

我建议您定义检查约束,并在检查约束中使用IsJSon()函数,如下所示:

CREATE TABLE TestJson
(
DocumentId BIGINT IDENTITY(1,1) PRIMARY KEY,
JsonText VARCHAR(max) CHECK (IsJson(JsonText) =1)
);
© www.soinside.com 2019 - 2024. All rights reserved.