以下是我遇到问题的问题:
编写一个DELETE
语句,删除类别表中ID为44444的行。执行此语句时,由于该类别在Products表中具有相关行,因此会产生错误。要解决此问题,请在DELETE语句之前添加另一个删除此类别中所有产品的DELETE
语句。
我不知道为什么我一直收到此错误消息:
DELETE语句与REFERENCE约束冲突 “FK__Products__Catego__145C0A3F”。冲突发生在数据库中 “MyGuitarShop”,表“dbo.Products”,列'CategoryID'。
这是我的SQL语句:
DELETE Categories
FROM Categories JOIN Products
ON Categories.CategoryID = Products.CategoryID
WHERE Categories.CategoryID = 44444;
我一直在研究这个问题已经有一段时间了,我无法弄清楚我做错了什么,任何帮助都会受到赞赏。
答案 0 :(得分:0)
您必须先删除产品,然后才能删除该类别。由于外键约束,您有错误。 因此我会写2个查询:
DELETE FROM Products WHERE CategoryID = 44444;
现在由于没有具有此ID的产品,因此可以删除该类别:
DELETE FROM Categories WHERE CategoryID = 44444;
答案 1 :(得分:0)
我知道在Postgres中至少可以使用级联修饰符来删除相关的行。
DELETE FROM Categories WHERE CategoryID = 44444 CASCADE;