SQLServer2005中的Update语句

SQLServer2005中的Update语句,sql,sql-server-2005,sql-update,Sql,Sql Server 2005,Sql Update,考虑以下情况,假设所有三个表都有一个列,默认情况下它被设置为0。。。我想仅当包含CustId=2和订单中CustId=1和的行被删除时,才更新CustId=1表中CustId=2的字段 桌子。。。我不想使用级联选项。。有什么建议吗 (来源:)Ok听起来不错。。。 我们是否仅在删除所有订单和与该客户关联的所有订单项目时,或仅在删除至少一个项目时,才设置删除标志。最简单的方法是存在。我假设您要同时检查订单和订单项。这也意味着您只能对CustID进行一次筛选 UPDATE C SET I

考虑以下情况,假设所有三个表都有一个列,默认情况下它被设置为0。。。我想仅当包含CustId=2订单中CustId=1和的行被删除时,才更新CustId=1表中CustId=2的字段 桌子。。。我不想使用级联选项。。有什么建议吗


(来源:)

Ok听起来不错。。。
我们是否仅在删除所有订单和与该客户关联的所有订单项目时,或仅在删除至少一个项目时,才设置删除标志。

最简单的方法是存在。我假设您要同时检查订单和订单项。这也意味着您只能对CustID进行一次筛选

UPDATE
   C
SET
   IsDeleted = 1
FROM
   Customers C
WHERE
   C.CustID = 2
   AND
   EXISTS (SELECT *
        FROM
            Orders O
        WHERE
            O.CustID = C.CustID AND O.IsDeleted = 1)
   AND
   EXISTS (SELECT *
        FROM
            Orders O
            JOIN
            OrderItems OI ON O.OrderID = OI.OrderID
        WHERE
            O.CustID = C.CustID AND OI.IsDeleted = 1)

您可以在表-客户上使用触发器

您可以获得有关触发器的详细信息:


使用触发器,您可以检查更新列的值,并根据它更新不同表的数据

@Anthonyv ya当所有订单和与该客户关联的所有订单项目都已删除时,我将设置删除标志deleted@gbn对于C.CustID=2,如果orderitems表中的某些行已被删除,则会发生这种情况