sql - 如果索引不存在,Drop_existing 会抛出错误

标签 sql sql-server-2000 indexing

我正在大型数据库上创建/更改大量索引。如果索引已经存在,则执行此操作有效。

CREATE UNIQUE CLUSTERED
INDEX [table1_1] ON [dbo].[table1] ([col1], [col2], [col3])
WITH DROP_EXISTING ON [PRIMARY]

但如果不存在,则会出现错误。

所以我将脚本更改为:

IF EXISTS (SELECT name FROM sysindexes WHERE name = 'table1_1') DROP INDEX [table1].[table1_1]
CREATE UNIQUE CLUSTERED
INDEX [table1_1] ON [dbo].[table1] ([col1], [col2], [col3])
ON [PRIMARY]

所以问题是我使用WITH DROP_EXISTING 是否错误?

最佳答案

是的,这是DROP_EXISTING的限制,如果索引尚不存在,它就会失败! (至少在 MS SQL 2000 和 2005 上)

引用:http://www.mssqltips.com/tip.asp?tip=1362

关于sql - 如果索引不存在,Drop_existing 会抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3106197/

相关文章:

sql - 插入带有子查询和序列的sql语句

mysql查询 "SHOW COLUMNS FROM table like ' colmunname'":questions

R:使用索引向量中的值将列添加到数据框,包括 NA

indexing - 如何将函数应用于日期索引的 DataFrame

SQL 服务器 : how do I get SQL to recognize ö and ß correctly

python - 将许多参数传递给 django 游标的一个占位符(IN 中的占位符)

sql - 列插入或更新与先前的 CREATE RULE 语句施加的规则冲突

c# - SQL 2000 的 NHibernate 变量限制

sql - 在查询中使用 VARCHAR 列的大小是否重要

mysql - Spring-data-jpa 实体是否已由 @EmbeddedId 字段索引?