是否可以创建带有检查约束的用户定义类型?
类似的东西:
create type json from nvarchar(max) check isjson(value)=1
确定,我可以添加规则。
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'
您不能如上所述提到的带有约束的用户定义类型。您可以使用包含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)
);