Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server MS SQL Server更新外键_Sql Server - Fatal编程技术网

Sql server MS SQL Server更新外键

Sql server MS SQL Server更新外键,sql-server,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.CI

您好,我正在尝试使用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';
它可以工作,但没有更新行。知道我错过了什么吗?非常感谢。

产品中的cid当前不是2,因此加入的categoryname不是“Food”,因此WHERE子句不匹配

我只需要在这里使用一个子查询

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

       WHERE pid = 1;

其中PID='1'和CATEGORY.CategoryName='Food'。。。表中没有符合此条件的行。您必须先单独更改CID,然后它才能工作。谢谢您,先生。