2014-12-06 50 views
1

我想在table1中更新列時更新table2中的列。Mysql觸發器更新多個表中的列

我有2名員工和company_details

這是我的員工表

emp_id | emp_name | location 
     1 |  xxx | germany 
     2 |  yyy | auckland 

這是我company_details表

id  | emp_name | role 
    1  |  xxx | software developer 
    2  |  yyy | tester 

當我嘗試在employee表我會更新列EMP_NAME例如自動更新company_details中的字段emp_name。我可以編寫一個查詢,其中當一個表列被更新時,另一個表列也被更新。

+1

MySQL和SQL Server的不同beasts.Yes您可以更新多個表。 – Mihai 2014-12-06 12:09:48

+0

你可以使用MERGE WITH UPDATE STATEMENTS – 2014-12-06 12:24:54

+0

可以請你舉個例子查詢嗎? @Mihai – 2014-12-08 05:26:53

回答

0

雖然你可以做到這一點

CREATE TRIGGER emp_name_update 
AFTER UPDATE ON employee 
FOR EACH ROW 
UPDATE company_details 
    SET emp_name = NEW.emp_name 
WHERE emp_name = OLD.emp_name; 

這裏是SQLFiddle演示

這是一個非常糟糕的架構設計。您應該使用emp_id作爲company_details中的外鍵。

CREATE TABLE employee 
(
    emp_id int not null primary key, 
    emp_name varchar(32), 
    location varchar(32) 
); 
CREATE TABLE company_details 
(
    id int not null primary key, 
    emp_id int, 
    role varchar(32), 
    foreign key (emp_id) references employee (emp_id) 
); 

這樣,當您的查詢你不需要進行任何更新,而是JOIN兩個表。

SELECT id, emp_name, role 
    FROM company_details d JOIN employee e 
    ON d.emp_id = e.emp_id; 

這裏是SQLFiddle演示