0

最初に「employee_details」、2番目に「attendance_rule」という2つのテーブルがあります

  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_code同じe_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

特定の従業員の臨時休暇の数を見つける必要がある場合は、2 つのテーブルを結合します。

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 に答える