2013-04-29 47 views
0

我有兩個表首先是 「employee_details」 二是 「attendance_rule」如何在MySQL中的另一個表更新一個表中插入後

  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 
    

我已經手動在「attendance_rule」中插入值。

現在的問題是,當出席規則在組織中的變化。用戶必須手動更新所有員工的casual_leave顏色。

我想要的是,當一個員工細節employee_details表中添加,在attendance_rule表中的條目應該是自動由具有e_codee_type一樣e_codeemployee_detailse_typecasual_leaves等於相同的casual_leaves僱員的type

我認爲應該在這裏使用觸發器。 但我不知道如何使用觸發器的這種情況下,即休閒葉的進入。 請幫我...我該怎麼做?有沒有辦法做到這一點觸發?

+0

你需要觸發器嗎? casual_leaves對於每個員工來說價值是不同的,還是僅針對每個員工類型? – Stobor 2013-04-29 15:51:19

+0

@Stobor casual_leaves值對於同一類型的員工是相同的。例如 - 所有常規型員工將有8張休閒葉,所有合同型員工將有4張休閒葉。 – 2013-05-02 14:31:11

回答

0

聽起來好像你不需要爲每個員工單獨輸入attendance_rule,只需要每個員工類型,所以根本不需要觸發器。只有對每種類型的規則

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

但創建attendance_rule

創建employee_details像你所說

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 
相關問題