0

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

  1. 员工详细信息

    e_code  |  e_name  |  e_type
    01      |  Ram     |  Regular
    02      |  Shyam   |  Contract
    03      |  Mohan   |  Regular
    
  2. 出勤规则

    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_detailscasual_leavescasual_leavestype

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

4

1 回答 1

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
于 2013-05-04T15:24:02.413 回答