我想在sql-server中创建一个类似于postgresql中的DOMAIN的类型。使用允许的值在sql server中创建类型
CREATE DOMAIN degree_level NVARCHAR(10)
CONSTRAINT degree_level_test
CHECK (VALUES IN (’Bachelors’, ’Masters’, ’Doctorate’))
注:我知道这个查询是不正确的。
是否有可能在SQL服务器中创建这样的类型?
我想在sql-server中创建一个类似于postgresql中的DOMAIN的类型。使用允许的值在sql server中创建类型
CREATE DOMAIN degree_level NVARCHAR(10)
CONSTRAINT degree_level_test
CHECK (VALUES IN (’Bachelors’, ’Masters’, ’Doctorate’))
注:我知道这个查询是不正确的。
是否有可能在SQL服务器中创建这样的类型?
在SQL Server中,你需要做这两个步骤
1)创建一个类型
2)创建一个约束
创建类型
CREATE TYPE dbo.degree_level FROM NVARCHAR(10)
GO
在桌面上创建约束条件
CREATE TABLE Type_Test_Table
(
ID INT ,
Type_Column degree_level
CHECK (Type_Column IN('Bachelors' , 'Masters' ,'Doctorate'))
)
GO
测试
INSERT INTO Type_Test_Table VALUES (1, 'Bachelors') --<-- Success
GO
INSERT INTO Type_Test_Table VALUES (2, 'Masters') --<-- Success
GO
INSERT INTO Type_Test_Table VALUES (3, 'Doctorate') --<-- Success
GO
INSERT INTO Type_Test_Table VALUES (4, 'Other Val') --<-- Fail
GO
谢谢,但可以检查类型创建中的约束? –
不是问题,是的,只有在其“TABLE TYPE”时,才可以在UDF类型中创建约束。如果它帮助你,你可以接受答案:) –
在SQL Server中,我们有用户定义类型看看['用户定义的Types'(http://technet.microsoft.com/en-us/library/ ms131086.aspx)以及['User Defined Table/Column Types'](http://technet.microsoft.com/zh-cn/library/ms131076.aspx) –