SQL删除查询外键约束
SQL Delete Query Foreign Key constraint
我正在尝试 Delete
在两个表中使用主键作为外键进行记录。每次我尝试 运行 查询时,它都会给我这个错误:
查询:
DELETE FROM BusinessPlus_Post
FROM BusinessPlus_Post
INNER JOIN BusinessPlus_PostImage ON BusinessPlus_Post.Post_ID = BusinessPlus_PostImage.BusinessPlusPost_ID
INNER JOIN BusinessPlus_PostTag ON BusinessPlus_Post.Post_ID = BusinessPlus_PostTag.BusinessPlusPost_ID
WHERE
(BusinessPlus_Post.Post_ID = 3)
AND (BusinessPlus_PostImage.BusinessPlusPost_ID = 3)
AND (BusinessPlus_PostTag.BusinessPlusPost_ID = 3)
错误:
The DELETE statement conflicted with the REFERENCE constraint
"FK_BusinessPlusPostImage". The conflict Occurred in database
"BusinessPlus_AdminPanel_Database", table
"dbo.BusinessPlus_PostImage", column 'BusinessPlusPost_ID'. The
statement was terminated.
Error: The DELETE statement conflicted with the REFERENCE constraint
"FK_BusinessPlusPostImage". The conflict Occurred in database
"BusinessPlus_AdminPanel_Database", table
"dbo.BusinessPlus_PostImage", column 'BusinessPlusPost_ID'. The
statement was terminated.
错误表示您有引用国外的数据,因此您无法删除。
删除BusinessPlus_AdminPanel_Database
中的数据 table
dbo.BusinessPlus_PostImage
,第 BusinessPlusPost_ID
列,然后尝试 删除
现在,您只是声明要删除 BusinessPlus_Post
记录,而不是 BusinessPlus_PostImage
和 BusinessPlus_PostTag
记录。这会导致问题,因为我们会有 'orphan' PostImage 和 PostTag 记录没有相应的 Post 记录。
显然,无法从 SQL 服务器中的多个表中删除(例如 在 MySQL 中受支持)。
您必须拆分查询,并首先从 'child' 个表中删除:
DELETE FROM BusinessPlus_PostImage
WHERE BusinessPlusPost_ID = 3
DELETE FROM BusinessPlus_PostTag
WHERE BusinessPlusPost_ID = 3
DELETE FROM BusinessPlus_Post
WHERE Post_ID = 3
我正在尝试 Delete
在两个表中使用主键作为外键进行记录。每次我尝试 运行 查询时,它都会给我这个错误:
查询:
DELETE FROM BusinessPlus_Post
FROM BusinessPlus_Post
INNER JOIN BusinessPlus_PostImage ON BusinessPlus_Post.Post_ID = BusinessPlus_PostImage.BusinessPlusPost_ID
INNER JOIN BusinessPlus_PostTag ON BusinessPlus_Post.Post_ID = BusinessPlus_PostTag.BusinessPlusPost_ID
WHERE
(BusinessPlus_Post.Post_ID = 3)
AND (BusinessPlus_PostImage.BusinessPlusPost_ID = 3)
AND (BusinessPlus_PostTag.BusinessPlusPost_ID = 3)
错误:
The DELETE statement conflicted with the REFERENCE constraint "FK_BusinessPlusPostImage". The conflict Occurred in database "BusinessPlus_AdminPanel_Database", table "dbo.BusinessPlus_PostImage", column 'BusinessPlusPost_ID'. The statement was terminated.
Error: The DELETE statement conflicted with the REFERENCE constraint "FK_BusinessPlusPostImage". The conflict Occurred in database "BusinessPlus_AdminPanel_Database", table "dbo.BusinessPlus_PostImage", column 'BusinessPlusPost_ID'. The statement was terminated.
错误表示您有引用国外的数据,因此您无法删除。
删除BusinessPlus_AdminPanel_Database
中的数据 table
dbo.BusinessPlus_PostImage
,第 BusinessPlusPost_ID
列,然后尝试 删除
现在,您只是声明要删除 BusinessPlus_Post
记录,而不是 BusinessPlus_PostImage
和 BusinessPlus_PostTag
记录。这会导致问题,因为我们会有 'orphan' PostImage 和 PostTag 记录没有相应的 Post 记录。
显然,无法从 SQL 服务器中的多个表中删除(例如 在 MySQL 中受支持)。
您必须拆分查询,并首先从 'child' 个表中删除:
DELETE FROM BusinessPlus_PostImage
WHERE BusinessPlusPost_ID = 3
DELETE FROM BusinessPlus_PostTag
WHERE BusinessPlusPost_ID = 3
DELETE FROM BusinessPlus_Post
WHERE Post_ID = 3