您好我正在使用Visual Studio 2015构建数据库 但是有一些错误会打断我的工作
这是我的表格查询:
CREATE TABLE [dbo].[Post] (
[Id] INT NOT NULL,
[job_desc] NTEXT NOT NULL,
[UID] INT NOT NULL,
[TheWork] NVARCHAR(50) NOT NULL,
[Photo_Of_Work_1] NCHAR (50) DEFAULT ('W_No_Pho') NULL,
[Photo_Of_Work_2] NCHAR (50) DEFAULT ('W_No_Pho') NULL,
[Photo_Of_Work_3] NCHAR (50) DEFAULT ('W_No_Pho') NULL,
[DT] DATETIME NOT NULL,
[Salary] MONEY NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_Post_ToPerson] FOREIGN KEY ([UID]) REFERENCES [dbo].[Person] ([Id])
);
所以我有job_desc
列,其类型为ntext
所以我不能使用普通索引,所以我必须使用full-text-index
我在这里有这段代码:
GO
CREATE UNIQUE INDEX jdui ON [Post] ([job_desc]);
GO
CREATE FULLTEXT CATALOG ftc AS DEFAULT;
GO
CREATE FULLTEXT INDEX ON [dbo].[Post] ([Job_Desc]) KEY INDEX jdui ON ftc WITH CHANGE_TRACKING AUTO
但我真的不知道为什么每次更新都会出现错误, 这是错误语法:
消息SQL00000创建[dbo]。[发布]。[jdui] ...错误SQL72014 .Net SqlClient数据提供程序:消息1919,级别16,状态1,行1列 表'dbo.Post'中的'job_desc'属于无效的类型 索引中的键列。 SQL72045脚本执行错误。该 执行脚本:CREATE UNIQUE NONCLUSTERED INDEX [jdui] ON [dbo]。[Post]([job_desc] ASC);
消息SQL00000正在执行批处理时发生错误。
所以任何人都可以帮助我
答案 0 :(得分:2)
按设计,SQL Server不允许列类型上的任何索引,例如nText
,Text
,varchar(max)
或nVarchar(max)
。
在这里,您尝试在job_desc
列NTEXT
上创建一个唯一约束,因此出现错误。
现在你可能会问,sql server不允许任何索引,但是你正在尝试创建一个唯一约束,事实上当我们在列上创建一个唯一约束时,SQL Server会在后台创建一个{{ 1}}索引以强制该列的唯一性。因此错误消息。
<强>解决方案强>
将列的类型更改为可以在Unique non-Clustered
或Varchar(8000)
上创建索引的内容。
或选择备用列以创建索引。可能是nVarchar(4000)
列。