2016-05-26 27 views
0

我有兩個表: 客戶(ID,姓名,advisorID)和 員工(ID,姓名,經理ID)sqlite觸發刪除更新元組與另一個表中的值?

當員工從Employee表中刪除,如何使觸發器更新客戶advisorID到已刪除的員工管理員ID的值?

到目前爲止,我有:

CREATE TRIGGER updateAdvisor BEFORE DELETE ON Employee 
    BEGIN 
     UPDATE Customer set Customer.advisorID = Employee.managerID 
     from Employee 
     WHERE Employee.managerID IN(
      SELECT managerID 
      FROM Employee) 

感謝您的幫助!

+0

這沒有什麼意義'WHERE Employee.managerID IN(SELECT 經理ID FROM員工)'。所有員工記錄顯然都是如此。問題是:員工記錄和客戶記錄之間的關聯是什麼。他們共享相同的ID?或者他們如何鏈接? – trincot

+0

員工中的EmployeeID是客戶中的顧問ID。更有意義@trincot – Jupiter

回答

1

UPDATE語句對單個表起作用;你要看看了一個correlated subquery新值:

UPDATE Customer 
SET advisorID = (SELECT managerID 
       FROM Employee 
       WHERE Employee = OLD.EmployeeID) 
... 

此外,要更新僅實際上有要被刪除的員工作爲顧問的客戶:

... 
WHERE advisorID = OLD.EmployeeID; 
0

這個工作大!

CREATE TRIGGER updateAdvisor BEFORE DELETE ON employee 
BEGIN 
UPDATE customer 
SET advisorID = (SELECT managerID FROM employee WHERE employeeID = old.employeeID) 
WHERE advisorID = old.employeeID; 
END; 
相關問題