所以我在oracle数据库中有以下表格,关于公司Funtom:
Funtom_employee
emp_ID
Emp_firstname
Emp_surname
Emp_department
emp_street
emp_town
emp_district
Emp_grade
Emp_site
Employee_status
Employee_termination
Employee_start
Funtom_grade
Grade_ID
Grade_rate
Grade_hours
Funtom_timesheet
Timesheet_ID
Timesheet_emp
Timesheet_wc
Timesheet_hours
Timesheet_OT
Timesheet_approved
当用户将有关员工每周工作的数据插入到Funtom_timesheet中时,他会插入属性Timesheet_emp,Timesheet_hours和Timesheet_wc(周开始)。
然而,插入的timesheet_hours包括正常的合约时间和加班时间。表Funtom_timesheet包含需要填写的属性Timesheet_OT。
每位员工都拥有自己的等级,该等级决定了与Funtom_grade表中的员工签订了多少小时(正常时间)。
我需要创建一个触发器,通过将用户插入的总小时数加起来并消除与Funtom_grade表中的员工签订的小时数(正常时间),自动生成超时小时数。 / p>
任何人都可以为我创造自己的方式来创造自己的方式吗?
到目前为止我有以下版本
CREATE TRIGGER trg_timesheet_hours
AFTER UPDATE ON Funtom_timesheet
FOR EACH ROW
DECLARE
V_contracted_hours number;
V_OT_hours number;
V_normal_hours;
V_emp_grade;
BEGIN
V_OT_hours := 0
Select Emp_grade into V_emp_grade from Funtom_employee
WHERE Emp_ID = :new.timesheet_emp;
Select Grade_hours into V_contracted_hours from Funtom_grade
WHERE grade_ID = V_emp_grade;
Select :new.Timesheet_hours - V_contracted_hours into V_OT_hours from Funtom_timesheet;
Select :new.Timesheet_hours - V_OT_hours into V_normal_hours;
:new.Timesheet_hours := V_normal_hours;
IF V_OT_hours != 0 THEN
INSERT INTO Funtom_timesheet(Timesheet_hours)
VALUES (V_OT_hours)
WHERE timesheet_emp = :new.timesheet_emp;
END IF
End;
/