我试图在Informatica中的目标表上删除pk约束并删除索引,以下这些语句首次成功运行。
IF EXISTS (SELECT Name FROM sysindexes WHERE Name = 'xyz')
DROP INDEX [xyz] ON [dbo].[Table_Name];
IF EXISTS (SELECT Name FROM sysindexes WHERE Name = 'xyz')
ALTER TABLE [dbo].[Table_Name] DROP CONSTRAINT [xyz];
但是,如果我第二次运行相同的查询,则会出现错误:
Cannot drop the index 'dbo.Table_Name.xyz', because it does not exist or you do not have permission
我需要一种
If ... Else
语句语法,例如是否存在drop else end或成功的东西。
最佳答案
造成这种情况的可能原因是您的数据库上可能有多个名为xyz
的索引。您的IF EXISTS
SELECT
语句未考虑xyz
位于哪个表上。
您可以自己运行select语句来自己检查这种情况。
尝试将查询更改为以下内容以限制范围:
If Exists
(
Select *
From sys.indexes
Where name = 'xyz'
And Object_Id = Object_Id('dbo.Table_Name')
)
Drop Index xyz On dbo.Table_Name;
关于sql - 删除索引或更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37398467/