参与了索引的列 怎么更改数据类型? 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,'')+')'本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报