Sql server 获取特定表名中的索引名
我需要检查该索引是否不存在于特定表名中,而不是所有表中 因为此select语句选择此条件下的所有索引Sql server 获取特定表名中的索引名,sql-server,indexing,Sql Server,Indexing,我需要检查该索引是否不存在于特定表名中,而不是所有表中 因为此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, ST
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
谢谢,您的支票没问题,我想更改两件事:
- 使用
系统目录视图(如果您使用的是SQL Server 2005或更高版本),而不是旧的、不推荐使用的sys.indexes
系统表sysindexes
- 在查询中添加对对象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.....
你的支票没问题,我想更改两件事:
- 使用
系统目录视图(如果您使用的是SQL Server 2005或更高版本),而不是旧的、不推荐使用的sys.indexes
系统表sysindexes
- 在查询中添加对对象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,但值得对对象ID检查进行模式范围界定-即对象ID('[schema name].[table name]')+1,但值得对对象ID检查进行模式范围界定-即对象ID('[schema name].[table name]'))我认为你是不对的,因为你可以在整个数据库中创建两个同名索引,每个表一个索引。正因为如此,我问了那个问题。你是对的。我今天学到了一些东西。我想的是约束()。它们对于数据库是唯一的,但是索引名对于表是唯一的。()我认为你是不对的,因为你可以在整个数据库中创建两个同名索引,每个表一个索引。正因为如此,我问了那个问题。你是对的。我今天学到了一些东西。我想的是约束()。它们对于数据库是唯一的,但是索引名对于表是唯一的。()