我从这个 DELETE 语句中遗漏了什么

What am I missing from this DELETE statement

这是我遇到的问题:

编写一个DELETE语句,删除类别table中ID为44444的行。当你执行这个语句时,它会产生一个错误,因为该类别在产品 table。要解决此问题,请在 DELETE 语句之前加上另一个 DELETE 语句,删除该类别中的所有产品。

我不知道为什么我不断收到此错误消息:

The DELETE statement conflicted with the REFERENCE constraint "FK__Products__Catego__145C0A3F". The conflict occurred in database "MyGuitarShop", table "dbo.Products", column 'CategoryID'.

这是我的 SQL 声明:

DELETE Categories
FROM Categories JOIN Products
    ON Categories.CategoryID = Products.CategoryID
WHERE Categories.CategoryID = 44444;

我已经为此工作了一段时间,但我不知道我做错了什么,我们将不胜感激。

您必须先删除产品,然后才能删除类别。由于外键约束,您有错误。 因此我会写 2 个查询:

DELETE FROM Products WHERE CategoryID = 44444;

现在由于没有具有此 ID 的产品,因此可以删除该类别:

DELETE FROM Categories WHERE CategoryID = 44444;

我知道在 Postgres 中至少可以使用级联修饰符来删除相关行。

DELETE FROM Categories WHERE CategoryID = 44444 CASCADE;