根据父表条件触发更新

时间:2019-05-02 12:03:57

标签: sql-server-2012

嗨,我使用SQL SERVER 2012,我有两个名为tbcustomer和tbcustomerdetail的表。这两个表都有column customerID。

我只管理tbcustomerdetail。如果我在客户ID ='001'处更新tbcustomerdetail,则需要触发器在客户ID ='001'处更新tbcustomer

我尝试了这个,但是没有找到拼写。

       CREATE TRIGGER Deletecustomer
       ON tbcustomerdetail
       FOR UPDATE
       AS
       BEGIN

            update tbcustomer tbcustomer.status=0 where     tbcustomer.customerID=updated.customerID;

       END

      //updated.customerID is the ID on column tbcustomerdetail where customerID is '001'.

我也尝试过更新后,但是不起作用。

1 个答案:

答案 0 :(得分:0)

Updated不存在,在触发器中,您有两个视图Deleted包含以前的数据,而Inserted包含新的视图

正如我提到的,它们是视图,并且包含受该语句影响的所有行的数据,因此,您需要在联接中使用它们

CREATE TRIGGER Deletecustomer
ON tbcustomerdetail
FOR UPDATE
AS
BEGIN
    UPDATE C 
        SET Status = 0
    FROM tbCustomer C
    JOIN Inserted I ON C.CustomerID = I.CustomerID
END