ark_yk 2015-10-26 05:24 采纳率: 100%
浏览 1987
已采纳

参与了索引的列 怎么更改数据类型?

参与了索引的列 怎么更改数据类型? alter table a alter column aa int

  • 写回答

3条回答 默认 最新

  • 道素 2015-12-03 03:21
    关注

    你需要先删除索引,修改完列再重建,删除和重建的SQL可以通过查询自动生成,比如:
    删除相关索引语句:

     DECLARE @indexName VARCHAR(500)=''
    DECLARE @TableName VARCHAR(500)='t2'
    DECLARE @ColName VARCHAR(500)='paid'
    
    SELECT 'DROP INDEX '+idx.name+' ON '+@TableName
    FROM sys.indexes idx
    INNER JOIN sys.tables tbl ON idx.object_id = tbl.object_id
    INNER JOIN sys.index_columns idxCol ON idx.index_id = idxCol.index_id
    INNER JOIN sys.columns col ON idxCol.column_id = col.column_id
    WHERE idx.type <> 0
        AND tbl.NAME = @TableName
        AND col.NAME = @ColName
    

    新建语句

    @indexName 是上面查询返回的索引名称

     SELECT  'CREATE NONCLUSTERED INDEX '+@indexName+' ON '+@TableName+'('+STUFF( 
    (SELECT ','+col.name+ CASE WHEN idxcol.is_descending_key=1 THEN ' DESC' ELSE '' END
    FROM sys.indexes idx
    INNER JOIN sys.index_columns idxCol ON idx.index_id = idxCol.index_id
    INNER JOIN sys.columns col ON idxCol.column_id = col.column_id AND col.[object_id]=idx.[object_id]
    WHERE idx.name=@indexName
    FOR XML PATH('')
    ),1,1,'')+')'
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效