我需要假定每个雇员每个项目的工时上限为100小时。我的任务是开发一个触发器,以便在雇员超出项目的工时上限时跟踪加班工时。我需要有关触发器语句的帮助
创建表EMP_PROJ(雇员编号(4,0)非空,项目编号(4,0)非空,工时数(4,2)非空,约束EMP_PROJ_雇员编号_项目编号_PK主键(雇员编号,项目编号));
创建表(员工编号(4,0)不为空,项目编号(4,0)不为空,工时编号(22)不为空,约束员工_项目_加班时间_员工编号_项目编号_主键(员工编号,项目编号));
这是我目前掌握的情况。
CREATE OR REPLACE TRIGGER OVERTIME_HOURS
AFTER INSERT OR UPDATE OF hoursWorked ON EMP_PROJ
declare
hoursWorked number(22);
BEGIN
IF(hoursWorked > 100)
THEN
INSERT INTO emp_proj_overtime(empNo, projNo, hourOt)
SELECT empNo, projNo, hoursWorked - 100
FROM EMP_PROJ;
END IF;
END;
这个触发器的问题是,它没有将超过100的小时数发送到加班表。
1条答案
按热度按时间qnzebej01#
你不要
select
在一次触发;只需使用:new
伪记录值。示例表:
触发器:由于定义为组合关键字的主键约束条件,每个[empno,projno]组合只能有一行。
测试(在更新现有行中的值期间出现加班小时数):
更多测试(最初插入的加班时间):