如何删除主键上的索引,求教。目前提示不允许对索引 'MyTable.PK_MyTable' 显式地使用 DROP INDEX。该索引正用于 PRIMARY KEY 约束的强制执行。

解决方案 »

  1.   

    那就先把主键约束删掉,然后再删除索引
    sp_helpindex MyTable
    --主键约束叫啥
    alter table MyTable drop constraint PK__MyTable__XXXXXX
      

  2.   

    如何删除主键上的索引,求教。目前提示不允许对索引 'MyTable.PK_MyTable' 显式地使用 DROP INDEX。该索引正用于 PRIMARY KEY 约束的强制执行。
    把主键取消,先在别的列键一个聚集索引,然后再建一个主键约束到主键列
      

  3.   

    主键是一个约束(constraint),他依附在一个索引上,这个索引可以是聚集索引,也可以是非聚集索引。
      

  4.   

    如何删除主键上的索引,求教。目前提示不允许对索引 'MyTable.PK_MyTable' 显式地使用 DROP INDEX。该索引正用于 PRIMARY KEY 约束的强制执行。
    把主键取消,先在别的列键一个聚集索引,然后再建一个主键约束到主键列、]"先在别的列键一个聚集索引"不明白,假如整个表不需要聚集索引呢,只想依靠表搜索查找数据,你想一个表10几行数据,或者几十行数据,根本不需要索引阿。
    能举个实际例子说下吗
      

  5.   


    现在你的需求是主键是否必须要包含索引? 是的,因为主建本身就是通过索引来实现的。能否单独存在? 不行在sql server中,主键是一种约束,但是这种约束是通过 索引来实现的。而同样的,唯一约束是一种约束,也是通过唯一索引来实现的。默认情况下,在创建主键时,系统会自动按照这个 主键字段,创建一个 聚集索引,也就是整个表的数据,都是按照这个 主键字段来排列的。所以这里唯一的问题是,这个主键 是通过 聚集索引来实现,还是非聚集索引来实现的,上面说到默认情况下,是通过聚集索引来实现的,下面一个例子是非聚集索引来实现的:
    --drop table tcreate table t(x int not null)
    alter table t 
    add constraint pk_ttt primary key nonclustered(x asc)