Триггер для базы обновлений при условии родительской таблицы - PullRequest
0 голосов
/ 02 мая 2019

Привет! Я использую SQL SERVER 2012 и у меня есть две таблицы с именами tbcustomer и tbcustomerdetail. Обе таблицы имеют столбец customerID.

Я управляю только клиентом. Если я обновляю tbcustomerdetail, где customerID = '001', тогда мне нужен триггер для обновления tbcustomer, где customerID = '001'

Я пробую это, но не нашел орфографии.

       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 голосов
/ 02 мая 2019

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
...