gpt4 book ai didi

sql-server - (TSQL) nvarchar(200) 稀疏空列上的唯一索引

转载 作者:行者123 更新时间:2023-12-04 06:42:36 27 4
gpt4 key购买 nike

我正面临一个令人困惑的问题。如果您创建如下所示的表,您将收到错误消息:

CREATE TABLE t
(
a NVARCHAR(100) SPARSE
NULL UNIQUE
)

Msg 1919, Level 16, State 2, Line 1
Column 'a' in table 't' is of a type that is invalid for use as a key column in an index.
Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.

但是如果你先创建表,然后像这样创建唯一索引,一切正常。
CREATE TABLE t
(

a NVARCHAR(100) SPARSE
NULL
)

CREATE UNIQUE NONCLUSTERED INDEX t_a ON dbo.t
(
a
)

任何人都可以帮我解释一下吗?

谢谢!

最佳答案

我不知道为什么,但来自 MSDN SPARSE columns

A sparse column cannot be part of a clustered index or a unique primary key index.



现在,进入猜想领域……

这是有道理的,因为 UNIQUE 约束不能被过滤,而显式索引可以。因此,UNIQUE 约束是不允许的,但通过 CREATE INDEX 允许,在那里你有一个隐含的过滤器。

我还说不允许用于聚集索引,因为每个非聚集索引都指的是聚集索引 + 聚集索引必须在内部唯一(如果没有明确表示)(“uniquifier”)。所以每一行都必须存在。

总之,你必须有一些独特的和/或集群的东西:这会破坏使用 SPARSE 的意义......不是吗?

关于sql-server - (TSQL) nvarchar(200) 稀疏空列上的唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4066753/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com