唯一的索引不会出现在SQL Server中



我在sql Server中具有我已链接到访问作为表的视图。当我在这样的视图上创建唯一索引时:

  CurrentProject.connection.Execute "CREATE UNIQUE INDEX PK ON viewTable (BookID);"

我可以看到SQL Server中实际上是旁边的视图的链接表具有主要的键符号。但是,如果我转到SQL Server中的视图,即使存在字段ID和Infoid,也似乎没有创建唯一的索引。

您看到的是正确的。

"索引"创建仅适用于访问客户端。它不会在服务器端创建索引。

请记住,您不想在99%的情况下在SQL中使用"索引"视图。

SQL Server将利用服务器端上存在的所有现有索引。再次:如果基表具有适当的索引,则不需要索引视图。

执行该命令时,只有"告知"客户列实际上是PK。在任何其他情况下,使用索引命令的使用对访问的使用零,并且在SQL Server端使用零。

,对于给定的示例,除非您希望视图可更新。

,您不需要该索引命令。

当您使用访问接口链接到SQL视图时,访问将提示您进行PK列。因此,如果您使用VBA代码创建喜欢的表,则只需要"索引"命令。当您创建带有访问代码的链接表时,它不会提示您进入PK。如果没有定义PK,则访问将仅将视图视为读取。

因此,您需要执行该命令的唯一情况是使用代码而不是访问接口创建了喜欢的表。

您的命令示例我没有事实显示在服务器端,只能告诉访问(客户端)哪个列用作PK。

视图中始终使用您在"基础"表中SQL Server上设置的任何索引。您当然可以在SQL Server上索引视图,但前提索引出于绩效原因。除非该视图以某种方式特殊限制了从SQL Server上的基本表中的数据,否则索引毫无用处,如所指出的,SQL Server始终将使用基本表中的索引(即使在视图时)没有索引)。

我怀疑所讨论的视图来自SQL Server上的基础表,如果该基表有索引(例如在PK上),则视图不需要也不需要索引。

在您的示例中,创建索引命令仅用于告诉访问pk的列。如果您不告诉访问PK使用哪个列,则将仅读取视图。

因此,如果您在SQL Server Design工具中提出该视图,那么所涉及的表的PK确实显示了。SQL Server的视图没有PK的概念。由于该视图没有PK(它使用了基本表中的PK),因此访问无法猜测,知道或告诉将哪个列用作PK。(SQL Server知道,但访问不知道)。因此,在这些情况下,您必须执行索引命令,或使用访问接口,该接口在创建到视图的链接时会提示您进行PK列。

因此,索引命令不会发送到SQL Server - 仅使用是"告诉"或"告知"访问客户端哪个列作为PK列 - 仅此而已,仅此而已。

我还应该指出,尽管您可以在SQL Server上创建索引,但您仍然无法在视图中定义PK。因此,即使您确实在SQL视图上创建了索引,也创建此类索引仍然不允许您定义PK。

相关内容

  • 没有找到相关文章

最新更新