我想创建一个名为tbl_Ticket_Mail_Address
的表。创建表时显示错误。
table :
CREATE TABLE [dbo].[tbl_Ticket_Mail_Address] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Designation] NVARCHAR (MAX) NULL,
[Emp_ID] NVARCHAR (MAX) NOT NULL,
[Emp_Name] NVARCHAR (MAX) NULL,
[Mobile] NVARCHAR (MAX) NULL,
[Emp_Email] NVARCHAR (MAX) NULL,
[Category] NVARCHAR (MAX) NULL,
[Created_By] NVARCHAR (MAX) NULL,
[Created_Date] DATE NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [uc_tbl_Ticket_Mail_Address] UNIQUE NONCLUSTERED ([Emp_ID] ASC, [Category] ASC)
);
CREATE TABLE [dbo].[tbl_Ticket_Mail_Address] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Designation] NVARCHAR (MAX) NULL,
[Emp_ID] NVARCHAR (MAX) NOT NULL,
[Emp_Name] NVARCHAR (MAX) NULL,
[Mobile] NVARCHAR (MAX) NULL,
[Emp_Email] NVARCHAR (MAX) NULL,
[Category] NVARCHAR (MAX) NULL,
[Created_By] NVARCHAR (MAX) NULL,
[Created_Date] DATE NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [uc_tbl_Ticket_Mail_Address] UNIQUE NONCLUSTERED ([Emp_ID] ASC, [Category] ASC)
);
最佳答案
SQL Server不允许您使用nvarchar(max)
列创建唯一索引。如D_T_U所评论,请选择较小的尺寸,例如nvarchar(100)
,您将能够创建索引。
自然,列大小需要符合您的要求,因此100仅是示例。
奖励信息:创建索引时,请记住,合并索引值的大小不得超过900个字节。每个nvarchar
字符将使用2个字节,因此您最多可以组合使用nvarchar(450)
的大小。例如,在您的情况下,您可能有
[Emp_ID] NVARCHAR (50) NOT NULL,
[Category] NVARCHAR (400)
只要给定行上的数据不超过900字节,就可以为nvarchar列声明较大的大小,这是允许的,但是很危险。例如,如果将两列都声明为
nvarchar(300)
,则会收到以下消息:关于sql-server - 类型是否无效,不能用作索引中的键列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30298629/