我希望在table1中更新列时更新table2中的列。
我有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。我可以编写一个查询,当一个表列更新时,另一个表列也会更新。
答案 0 :(得分: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 演示