我可以用用户定义的表类型构造表吗?

时间:2018-09-04 11:31:02

标签: sql sql-server user-defined-types

我有一个名为EmpType的表类型,其结构如下:

CREATE TYPE EmpType AS TABLE
(
ClientId UNIQUEIDENTIFIER,
EmployeeId INT,
Experience SMALLINT,
Age SMALLINT
);

此查询已在MS SQL Server中成功运行。

现在,我尝试使用此表类型构造另一个表,这给了我一个错误。

CREATE TABLE EmpHashIndex2
(
HashIndex SMALLINT CONSTRAINT has_pk PRIMARY KEY,
TableName dbo.EmpType
);

执行上述查询后,它显示错误消息:

The column "TableName" does not have a valid data type. A column cannot be of a user-defined table type.

1 个答案:

答案 0 :(得分:0)

在我看来,您正在尝试将OOP方法应用于Relational DB。类似于“指向” 任何数据的指针。这不是它在RDBMS中的工作方式。

也许您需要这样的关系模式:

Client <- EmployeePerClient -> Employee

它们都不是table type,它们都必须是table,其中foreign key定义了它们的依赖关系。