繁体   English   中英

插入另一个表后如何在MySQL中更新一个表

[英]How to update one table in MySQL after insertion in another table

我有两个表,第一个是“ employee_details”,第二个是“ attendance_rule”

  1. employee_details

     e_code | e_name | e_type 01 | Ram | Regular 02 | Shyam | Contract 03 | Mohan | Regular 
  2. Attenance_rule

     e_code | e_type | casual_leaves 01 | Regular | 7 02 | Contract | 6 03 | Regular | 7 

我已经在“ attendance_rule”中手动插入了值。

现在的问题是,当组织中的出勤规则发生变化时。 用户必须手动更新所有员工的casual_leave

我想要的是,当一个员工详细信息中添加employee_details表,在入口attendance_rule表应自动由具有e_codee_type一样e_codee_typeemployee_details表和casual_leaves等于给casual_leaves相同type员工。

我认为这里应该使用触发器。 但我不知道如何在这种情况下使用触发器,即用于临时叶子的进入。 请帮助我...我该怎么做? 有其他触发方式吗?

这听起来像你不需要一个单独的条目attendance_rule每一位员工,只为每一位员工的类型,所以你并不需要一个触发的。

按照您的建议创建employee_details

    e_code  |  e_name  |  e_type
    01      |  Ram     |  Regular
    02      |  Shyam   |  Contract
    03      |  Mohan   |  Regular

但是,仅使用每种类型的规则创建attendance_rule

    e_type  | casual_leaves 
   Regular  |      7
   Contract |      6

如果您需要查找特定雇员的临时请假数量,请结合两个表:

select 
      e.e_code, 
      e.e_name, 
      e.e_type, 
      a.casual_leaves 
 from employee_details e 
        inner join attendance_rule a on e.e_type = a.e_type

要得到

    e_code  |  e_name  |  e_type   | casual_leaves 
    01      |  Ram     |  Regular  |      7
    02      |  Shyam   |  Contract |      6
    03      |  Mohan   |  Regular  |      7

而且,如果您想使其像表格一样易于使用,则可以创建一个视图:

create view emp_all_details as 
select 
      e.e_code, 
      e.e_name, 
      e.e_type, 
      a.casual_leaves 
 from employee_details e 
        inner join attendance_rule a on e.e_type = a.e_type

现在您可以简单地说: select * from emp_all_details以获取:

    e_code  |  e_name  |  e_type   | casual_leaves 
    01      |  Ram     |  Regular  |      7
    02      |  Shyam   |  Contract |      6
    03      |  Mohan   |  Regular  |      7

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM