Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql触发器更新多个表中的列_Mysql_Triggers - Fatal编程技术网

Mysql触发器更新多个表中的列

Mysql触发器更新多个表中的列,mysql,triggers,Mysql,Triggers,我想在表1中更新列时更新表2中的列 我有2名员工和公司详细信息 这是我的员工表 emp_id | emp_name | location 1 | xxx | germany 2 | yyy | auckland 这是我公司的详细资料表 id | emp_name | role 1 | xxx | software developer

我想在表1中更新列时更新表2中的列

我有2名员工和公司详细信息

这是我的员工表

    emp_id  |  emp_name  |  location
       1    |     xxx    |  germany
       2    |     yyy    |  auckland
这是我公司的详细资料表

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

当我尝试更新
employee
表中的列emp\u name时,我希望自动更新
company\u details
中的字段emp\u name。我是否可以编写一个查询,当一个表列被更新时,另一个表列也会被更新。

尽管您可以这样做

CREATE TRIGGER emp\u name\u update
更新员工信息后
每行
更新公司详细信息
设置emp\u name=NEW.emp\u name
其中emp_name=OLD.emp_name;
这里是演示

这是一个非常糟糕的模式设计。您应该在
company\u details
中使用
emp\u id
作为外键

createtableemployee
(
emp_id int not null主键,
emp_名称varchar(32),
位置varchar(32)
);
创建表格公司详细信息
(
id int非空主键,
emp_id int,
角色varchar(32),
外键(emp_id)引用员工(emp_id)
);
这样,您不需要更新任何内容,而是在查询时将两个表连接起来

选择id、emp\u名称、角色
从公司_详情d加入员工e
在d.emp_id=e.emp_id;

下面是演示

mysql和sql server是不同的野兽。是的,您可以更新多个表。您可以使用MERGE WITH update语句扫描您是否可以给出一个示例查询@Mihai你能给出一个查询示例吗@甘尼什·德夫勒卡