我需要检查特定表名中是否存在此索引,而不是所有表中都存在 因为这个select语句选择了这种情况下的所有索引。
IF NOT EXISTS (SELECT name from sysindexes WHERE name = 'IDX_InsuranceID')
CREATE NONCLUSTERED INDEX [IDX_InsuranceID] ON [dbo].[QuoteInsurances]
(
[InsuranceID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
GO
谢谢,
答案 0 :(得分:3)
您的支票没问题,我会更改两件事:
使用sys.indexes
系统目录视图(如果您使用的是SQL Server 2005或更高版本)而不是旧的,已弃用的sysindexes
系统表
在您的查询中添加对object_id(表格链接)的检查
这样的事情:
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IDX_InsuranceID'
AND object_id = OBJECT_ID('your-table-name-here'))
-- do whatever you need to do here.....
答案 1 :(得分:0)
如果我理解正确,整个数据库中没有2个索引可以具有相同的名称,所以我认为你是安全的。如果您认为我不正确,请尝试在具有相同名称的不同表上创建两个索引,看看会发生什么......