我正在尝试创建一个具有如下所示其他类型的类型。
CREATE TYPE [dbo].[PropertyImage] AS TABLE
(
[PropertyImage] [NVARCHAR](MAX) NULL,
[PropertyType] [NVARCHAR](500) NULL
)
CREATE TYPE [dbo].[Properties] AS TABLE
(
[Id] INT,
[UserId] INT,
[PropertyImageList] [dbo].[PropertyImage]
)
我收到此错误:
“ PropertyImageList”列没有有效的数据类型。列不能是用户定义的表类型。
还有其他选择吗?
答案 0 :(得分:0)
也许您可以将XML列与架构一起使用。
CREATE XML SCHEMA COLLECTION [PropertyImageXMLSchema] AS
N' <schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="Image">
<complexType>
<sequence>
<element minOccurs="0" name="PropertyImage" type="string"/>
<element minOccurs="0" name="PropertyType" type="string"/>
</sequence>
</complexType>
</element>
</schema> ';
GO
CREATE TABLE [Properties] (
[Id] int,
[UserId] int,
[PropertyImageList] XML(PropertyImageXMLSchema)
);
GO
INSERT INTO [Properties] (Id, UserId,PropertyImageList)
VALUES (1,1,
N'<Image>
<PropertyImage>test image 1 </PropertyImage>
<PropertyType>test type 1</PropertyType>
</Image>
<Image>
<PropertyImage>test image 2 </PropertyImage>
<PropertyType>test type 2</PropertyType>
</Image>'
);
答案 1 :(得分:0)
CREATE TYPE TypeName FROM nvarchar(max)
CREATE TABLE Test(Test_Name varchar(50), Test_Data TypeName)
--Custom Type Table
CREATE TYPE customTypeTable AS Table (name varchar(100), age int, location TypeName)
有关更多详细信息,请单击here
答案 2 :(得分:0)
为什么您完全需要用户定义的类型?两个表的典型SQL解决方案有问题吗?
CREATE TYPE [dbo].Properties (
PropertyId INT IDENTITY(1, 1) PRIMARY KEY,
UserId INT
);
CREATE TABLE PropertyImages (
PropertyImageId INT IDENTITY(1, 1) PRIMARY KEY,
PropertyId INT NOT NULL,
PropertyImage NVARCHAR(MAX) NULL,
PropertyType [NVARCHAR(500) NULL,
CONSTRAINT FK_PropertyImages_PropertyId FOREIGN KEY (PropertyId) REFERENCES Properties(PropertyId)
);