小编典典

仅当外键约束存在于 sql server 中时,如何删除它?

all

如果表存在,我可以使用以下代码删除表,但不知道如何对约束执行相同操作:

IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'TableName') AND type = (N'U')) DROP TABLE TableName
go

我还使用以下代码添加了约束:

ALTER TABLE [dbo].[TableName] 
  WITH CHECK ADD CONSTRAINT [FK_TableName_TableName2] FOREIGN KEY([FK_Name])
    REFERENCES [dbo].[TableName2] ([ID])
go

阅读 79

收藏
2022-05-07

共1个答案

小编典典

回答中提供了更简单的解决方案。但是,它会在任何表上找到约束。如果要针对特定​​表的外键约束,请使用以下命令:

IF EXISTS (SELECT * 
  FROM sys.foreign_keys 
   WHERE object_id = OBJECT_ID(N'FK_TableName_TableName2')
   AND parent_object_id = OBJECT_ID(N'dbo.TableName')
)
  ALTER TABLE [dbo].[TableName] DROP CONSTRAINT [FK_TableName_TableName2]
2022-05-07