首页 > 解决方案 > MS SQL Server 更新外键

问题描述

您好我正在尝试使用 FK 约束更新我的表上的数据。所以我有这两张桌子。

在此处输入图像描述

我正在尝试更新 PID 1 并将其 ProductName 设置为 Burger 并根据 CategoryName 将其 CID 更改为 2 食品。

这是我到目前为止所尝试的,

UPDATE PRODUCTS 
   SET PRODUCTS.ProductName = 'Burger ', 
   PRODUCTS.CID = CATEGORY.CID
   FROM PRODUCTS INNER JOIN CATEGORY ON PRODUCTS.CID = CATEGORY.CID
   WHERE PID = '1' AND CATEGORY.CategoryName = 'Food';

它有效,但没有更新行。知道我错过了什么吗?非常感谢。

标签: sql-server

解决方案


在当前不是所以加入cid不是因此子句不匹配。products2categoryname'Food'WHERE

我只是在这里使用一个子查询。

UPDATE products
       SET productname = 'Burger',
           cid = (SELECT cid
                         FROM category
                         WHERE categoryname = 'Food')

       WHERE pid = 1;

推荐阅读