“DELETE语句与REFERENCE约束冲突”

时间:2017-07-20 06:50:39

标签: sql sql-server

我试图删除最高价格的product_price,但我收到此错误; 我运行这个查询..

delete from tbl_product where product_price=(select max(product_price) from tbl_product)

并收到此错误....

  

DELETE语句与REFERENCE约束冲突   “fk_orderLineNew”。冲突发生在数据库中   “Db_customerProduct”,表“dbo.tbl_orderLine”,列'product_id'。

     

声明已经终止。

如何删除这个..... !!!

3 个答案:

答案 0 :(得分:1)

您要删除的行(产品)在其他表(显然是订单行表)中有一些记录。这就是它无法删除的原因。

答案 1 :(得分:0)

您有一个名为“fk_orderLineNew”的引用约束。 这告诉您,如果tbl_orderLine中有product_id,那么product_id也必须在tbl_product中。您不能只删除其中一个,您必须从每个表中删除。 所以你的删除查询将是下一个:

DELETE
FROM tbl_orderLine
WHERE product_id IN (
        SELECT product_id
        FROM tbl_product
        WHERE product_price = (
                SELECT max(product_price)
                FROM tbl_product
                )
        )

DELETE
FROM tbl_product
WHERE product_price = (
        SELECT max(product_price)
        FROM tbl_product
        )

答案 2 :(得分:-2)

delete from tbl_product where product_price=(select max(product_price) from tbl_product) 

并收到此错误....

The DELETE statement conflicted with the REFERENCE constraint "fk_orderLineNew". The conflict occurred in database "Db_customerProduct", table "dbo.tbl_orderLine", column 'product_id'

由于您在“tbl_orderLine”表中提供了参照完整性,因此您遇到了上述错误。 如果要删除数据,则需要删除参照完整性。