Sql ORACLE:带时间段的触发器
我有两张桌子: -合同(经理、开始日期、结束日期、类别编号) -团队(经理、开始日期、结束日期) 我想用触发器检查一下,当所有经理出现在团队中时,他们的合同类别是否在4到9之间 这是我的触发器:Sql ORACLE:带时间段的触发器,sql,oracle,Sql,Oracle,我有两张桌子: -合同(经理、开始日期、结束日期、类别编号) -团队(经理、开始日期、结束日期) 我想用触发器检查一下,当所有经理出现在团队中时,他们的合同类别是否在4到9之间 这是我的触发器: CREATE TRIGGER T1 BEFORE INSERT OR UPDATE OF manager on teams FOR EACH ROW DECLARE nJP NUMBER; project_enddate DATE; BEGIN SELECT sysdate INTO
CREATE TRIGGER T1
BEFORE INSERT OR UPDATE OF manager on teams
FOR EACH ROW
DECLARE
nJP NUMBER;
project_enddate DATE;
BEGIN
SELECT sysdate INTO project_enddate FROM projects WHERE :NEW.end_date IS NULL;
SELECT COUNT(*)
INTO nJP
FROM CONTRACTS c
WHERE c.manager = :NEW.manager AND ((:NEW.start_date<c.start_date AND project_enddate>c.start_date) OR (:NEW.start_date>c.start_date)) AND c.cat_num BETWEEN 4 AND 9;
IF nJP = 0 THEN
RAISE_APPLICATION_ERROR(-20000,'Error: INVALID CAT_NUM');
END IF;
END T1;
/
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "SYSTEM.DISP_CAT_SUP", line 5
ORA-04088: error during execution of trigger 'SYSTEM.DISP_CAT_SUP'
当我在团队中插入值('12345',截止日期('05/02/15','DD-MM-YY'),截止日期('29/03/16','DD-MM-YY'))
显示我的触发器的执行错误:
CREATE TRIGGER T1
BEFORE INSERT OR UPDATE OF manager on teams
FOR EACH ROW
DECLARE
nJP NUMBER;
project_enddate DATE;
BEGIN
SELECT sysdate INTO project_enddate FROM projects WHERE :NEW.end_date IS NULL;
SELECT COUNT(*)
INTO nJP
FROM CONTRACTS c
WHERE c.manager = :NEW.manager AND ((:NEW.start_date<c.start_date AND project_enddate>c.start_date) OR (:NEW.start_date>c.start_date)) AND c.cat_num BETWEEN 4 AND 9;
IF nJP = 0 THEN
RAISE_APPLICATION_ERROR(-20000,'Error: INVALID CAT_NUM');
END IF;
END T1;
/
ERROR at line 1:
ORA-01403: no data found
ORA-06512: at "SYSTEM.DISP_CAT_SUP", line 5
ORA-04088: error during execution of trigger 'SYSTEM.DISP_CAT_SUP'
告诉我们错误是什么会有帮助吗?将“从项目中选择sysdate到project_enddate,其中:NEW.end_date为NULL;”替换为“如果:NEW.end_date为NULL,那么project_enddate:=sysdate;end IF”。如果项目表中有>1行,则您将选择error@OldProgrammer我怀疑是ORA-01422。这是
系统。DISP\u CAT\u SUP
程序?错误似乎与您的特定触发器无关。您能否检查是否有任何其他触发器与此表关联团队?谢谢大家!!!我用TenG解决了我的问题评论:D