程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> sql server-參與了索引的列 怎麼更改數據類型?

sql server-參與了索引的列 怎麼更改數據類型?

編輯:編程綜合問答
參與了索引的列 怎麼更改數據類型?

參與了索引的列 怎麼更改數據類型? alter table a alter column aa int

最佳回答:


你需要先刪除索引,修改完列再重建,刪除和重建的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,'')+')'
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved