使用主键引用删除外键

时间:2015-08-14 10:02:59

标签: sql-server

我尝试了很多论坛,但不满意 - 我有一个主键和外键关系的表。

我必须删除带主键的表行,所以我需要在删除之前删除约束。

我用过:

delete from [docd_metadata].[docd_metadata].[STATEMENT_IMAGES] 
where [statement_image_id]= 05291520275

我收到了错误:

  

DELETE语句与REFERENCE约束“fk_stmnt_image_StmntImageId”冲突。冲突发生在数据库“docd_metadata”,表“docd_metadata.STATEMENT_CAMPAIGN”,列'STATEMENT_IMAGE_ID'中。

所以我试过了:

ALTER TABLE[docd_metadata].[docd_metadata].[STATEMENT_IMAGES] 
DROP CONSTRAINT [fk_stmnt_image_StmntImageId]

现在我得到了:

  

约束'fk_stmnt_image_StmntImageId'不属于表'STATEMENT_IMAGES'

架构:

Schema of table constraints is

此外:

enter image description here

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果您真的仔细阅读了错误消息,那么很明显FK约束在表docd_metadata.STATEMENT_CAMPAIGN上而不在STATEMENT_IMAGES上 - 因此,您必须使用此SQL来删除FK约束:

ALTER TABLE [docd_metadata].[STATEMENT_CAMPAIGN] 
DROP CONSTRAINT [fk_stmnt_image_StmntImageId]

FK从表[docd_metadata].[STATEMENT_CAMPAIGN](列STATEMENT_IMAGE_ID)到[docd_metadata].[STATEMENT_IMAGES] - 一个表有主键,另一个表通过其外键引用。