【发布时间】:2018-01-11 08:56:51
【问题描述】:
我想在视图中按名称创建唯一的聚集索引。
这就是我创建视图的方式
create view vWTotalsalesbyProduct
with schemabinding
as
select
Name,
Sum(Isnull(Unitprice * QuantitySold, 0)) as TotalSales,
COUNT_BIG(*) as Totaltransation
from
dbo.product P
join
dbo.tblproductcount C on P.productID = C.productID
group by
Name
这就是我创建唯一聚集索引的方式
create unique clustered index UIX_vWTotalsalesbyProductName
on vWTotalsalesbyProduct(Name)
但我得到一个错误
表 'vWTotalsalesbyProduct' 中的列 'Name' 的类型不能用作索引中的键列。
帮我解决
【问题讨论】:
-
那么基表中
Name列的数据类型是什么? -
你能把它改成更健全的数据类型吗?我无法想象一个名字需要支持 2GB 的长度
-
您不能使用 varchar(max) 作为索引中的键列
-
解决方案是将您的密钥声明为 nvarchar(20)
-
你最好使用productID字段作为聚集索引。
标签: sql-server view unique clustered-index