我从这个 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;
这是我遇到的问题:
编写一个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;