【发布时间】:2019-02-09 10:19:20
【问题描述】:
我有一个名为 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.
【问题讨论】:
-
如果您想要该类型的列,那么“列不能属于用户定义的表类型。”消息中的内容不清楚?这是一个响亮的不,不是吗?但是,如果您想要该类型的表格,请参阅"create SQL Server table based on a user defined type"。
-
看起来您正试图在一行中存储多行。这不是 DBMS 的工作方式。您需要创建 2 个表,并定义主键和外键,以便定义多对一关系。
-
@Samarth 请描述您正在努力完成的任务。你想用这样的模型达到什么目的?
-
当然不是!!!表不能将表作为列。这就像询问您是否可以将整个 Excel 选项卡放在一个单元格中。这没有任何意义。
-
我只想让“TableName”列的每个单元格指向一个可以在其他地方使用的不同表格。
标签: sql sql-server user-defined-types