You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Oracle数据库触发器实现假期时长不低于7天的校验规则

Oracle假期申请审批时长校验触发器实现方案

前提约定

我们先统一表结构约定,你可以根据实际业务的表名、字段名做替换:

  • 假期申请表名:LEAVE_APPLICATIONS
  • 核心字段:
    • SUBMIT_TIME DATE:用户提交假期申请的时间
    • APPROVAL_COMPLETE_TIME DATE:管理员操作审批的时间
    • APPROVAL_STATUS VARCHAR2(20):审批状态,可选值为待审批/已通过/已驳回

触发器代码

CREATE OR REPLACE TRIGGER trg_check_approval_duration
BEFORE INSERT OR UPDATE OF APPROVAL_STATUS, APPROVAL_COMPLETE_TIME
ON LEAVE_APPLICATIONS
FOR EACH ROW
BEGIN
  -- 仅校验审批通过的申请
  IF :NEW.APPROVAL_STATUS = '已通过' THEN
    -- 计算审批时长,不足7天则抛出异常阻止操作
    IF (:NEW.APPROVAL_COMPLETE_TIME - :NEW.SUBMIT_TIME) < 7 THEN
      RAISE_APPLICATION_ERROR(-20001, '操作失败:审批时长不足7天的假期申请不允许通过');
    END IF;
  END IF;
END;
/

常见调整方案

如果你的实际需求是校验假期本身的时长不足7天不允许申请/审批,只需要修改校验逻辑即可:

  1. 先确保你的表有LEAVE_START_DATE(假期开始日期)和LEAVE_END_DATE(假期结束日期)两个字段
  2. 把上面触发器中IF判断的条件替换为:
IF (:NEW.LEAVE_END_DATE - :NEW.LEAVE_START_DATE) < 7 THEN

内容的提问来源于stack exchange,提问作者charlyo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:24:08