【发布时间】:2014-05-30 18:03:15
【问题描述】:
我想动态更改我的表上的聚集索引的名称,假设它被称为 (MY_TABLE),以便创建的聚集索引采用以下形式:PK_MY_TABLE。问题是,从索引开始的形式是:“PK_MY_TABLE_E86234JKFDS”等。有没有办法在 SQL 语句中引用这样的索引来引用表的聚集索引,尽管“_E86234JKFDS”部分是唯一的?
我希望创建一个始终有效的查询,因为索引名称始终是唯一的,这似乎很困难。也许有一种方法可以引用表的聚集索引,因为只有一个?
谢谢
【问题讨论】:
-
别那么懒惰 -- msdn.microsoft.com/en-us/library/ms174979.aspx,阅读带有名称的约束的语法 -- 其中约束是主键。
-
不,我没有忽略你的两部分问题。我想也许你会在被提醒你很懒惰之后自己谷歌这个 - 显然不是。删除现有的聚集索引,然后创建一个新的聚集索引,并可能创建原始索引的非聚集版本。您可以使用 sp_rename 重命名很多东西,但由于新索引可能会索引与原始索引不同的字段,因此 sp_rename 在这种情况下不太可能有用。
-
我的朋友。在这种情况下,索引名称由数据库生成并且是唯一的。当他们拥有所有这些独特的角色之后,你建议我如何引用它们?
-
我不确定,但我猜你得到了 -2,因为你问了一些可以通过查找手册或搜索现有解决方案来解决的问题。
-
获取表的 CI 名称很简单:
SELECT name FROM sys.indexes WHERE type = 1 AND object_id = OBJECT_ID('schema.MyTable')
标签: sql sql-server sql-server-2008-r2