SQLServer2005中的Update语句
考虑以下情况,假设所有三个表都有一个列,默认情况下它被设置为0。。。我想仅当包含CustId=2和订单中CustId=1和的行被删除时,才更新CustId=1表中CustId=2的字段 桌子。。。我不想使用级联选项。。有什么建议吗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
(来源:)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表中的某些行已被删除,则会发生这种情况