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

时间:2013-04-29 15:37:54

标签: mysql triggers

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

  1. employee_details

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

    e_code  |  e_type  | casual_leaves 
     01     | Regular  |      7
     02     | Contract |      6
     03     | Regular  |      7
    
  3. 我已在“attendance_rule”中手动插入值。

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

    我想要的是,当在employee_details表中添加员工详细信息时,attendance_rule表中的条目应自动生成e_codee_type相同的e_code表的e_typeemployee_details以及casual_leaves等于同一casual_leaves员工的type

    我认为应该在这里使用触发器。 但我不知道如何使用触发器来处理这种状况,即休闲叶片的进入。 请帮帮我......我该怎么做?有没有办法做其他触发?

1 个答案:

答案 0 :(得分:0)

听起来你不需要在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