我刚刚注册并希望这是有道理的。将变量传递给DROP INDEX语句
无论如何,总之,我想测试某个列是否有索引,如果是,请删除索引。我想知道我是否可以通过将索引名称传递给DROP INDEX语句。
首先,FYI表名是'Account',列名是'ID'。
要测试索引存在我用下面的(不要以为我是任何类型的天才,我从这里的SELECT语句): http://social.msdn.microsoft.com/Forums/sqlserver/en-US/e183be6c-1177-4f81-b130-aeeeff7638fe/how-do-you-check-if-an-index-exists-for-sql-table-column
IF EXISTS
(SELECT
sysindex.name AS IndexName
FROM
sys.indexes AS SysIndex
INNER JOIN sys.index_columns AS SysIndexCol ON SysIndex.object_id = SysIndexCol.object_id AND SysIndex.index_id = SysIndexCol.index_id
INNER JOIN sys.columns AS SysCols ON SysIndexCol.column_id = SysCols.column_id AND SysIndexCol.object_id = SysCols.object_id
WHERE
type <> 0
AND SysIndex.object_id in (Select systbl.object_id from sys.tables as systbl
WHERE SysTbl.name = 'Account')
AND SysCols.name = 'ID')
DROP INDEX dbo.Account.Account$ID;
GO
在DROP INDEX上面的语句我已经硬编码了索引名称('Account $ ID') - 如果你自己运行SELECT语句,它会显示名称,但它也很容易通过SSMS识别。 但是,而不是硬编码的索引名称,我想能够以某种方式传递索引名称(就像我说的,由SELECT语句显示)到DROP INDEX语句。我想这将通过声明一个变量并以某种方式将其设置为查询结果来完成,但我不知道该怎么做。可以做到吗?