2014-12-06 45 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演示