更新两个触发器

更新两个触发器
This commit is contained in:
liozvqe 2025-08-30 14:16:07 +08:00
parent 245a3fa257
commit acbf9c9ec3
2 changed files with 138 additions and 0 deletions

View File

@ -0,0 +1,69 @@
create or replace TRIGGER trg_uf_competency_evalu_dt1
BEFORE INSERT OR UPDATE ON uf_competency_evalu_dt1
FOR EACH ROW
BEGIN
-- kpdfzy (专业)
IF INSERTING OR
(:NEW.kpdfzy IS NULL AND :OLD.kpdfzy IS NOT NULL) OR -- 情况1新值为空时间设为空
(:OLD.kpdfzy IS NULL AND :NEW.kpdfzy IS NOT NULL) OR -- 情况2旧值为空新值有值更新时间
(:OLD.kpdfzy IS NOT NULL AND :NEW.kpdfzy IS NOT NULL AND :OLD.kpdfzy <> :NEW.kpdfzy) THEN -- 情况3都不为空且不相等更新时间
IF :NEW.kpdfzy IS NOT NULL THEN
:NEW.professional_time := TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3');
ELSE
:NEW.professional_time := NULL;
END IF;
END IF;
-- kpdfbm (部门)
IF INSERTING OR
(:NEW.kpdfbm IS NULL AND :OLD.kpdfbm IS NOT NULL) OR
(:OLD.kpdfbm IS NULL AND :NEW.kpdfbm IS NOT NULL) OR
(:OLD.kpdfbm IS NOT NULL AND :NEW.kpdfbm IS NOT NULL AND :OLD.kpdfbm <> :NEW.kpdfbm) THEN
IF :NEW.kpdfbm IS NOT NULL THEN
:NEW.department_time := TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3');
ELSE
:NEW.department_time := NULL;
END IF;
END IF;
-- kpdfsyb (事业部)
IF INSERTING OR
(:NEW.kpdfsyb IS NULL AND :OLD.kpdfsyb IS NOT NULL) OR
(:OLD.kpdfsyb IS NULL AND :NEW.kpdfsyb IS NOT NULL) OR
(:OLD.kpdfsyb IS NOT NULL AND :NEW.kpdfsyb IS NOT NULL AND :OLD.kpdfsyb <> :NEW.kpdfsyb) THEN
IF :NEW.kpdfsyb IS NOT NULL THEN
:NEW.businessUnit_time := TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3');
ELSE
:NEW.businessUnit_time := NULL;
END IF;
END IF;
-- kpdfgs (公司)
IF INSERTING OR
(:NEW.kpdfgs IS NULL AND :OLD.kpdfgs IS NOT NULL) OR
(:OLD.kpdfgs IS NULL AND :NEW.kpdfgs IS NOT NULL) OR
(:OLD.kpdfgs IS NOT NULL AND :NEW.kpdfgs IS NOT NULL AND :OLD.kpdfgs <> :NEW.kpdfgs) THEN
IF :NEW.kpdfgs IS NOT NULL THEN
:NEW.company_time := TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3');
ELSE
:NEW.company_time := NULL;
END IF;
END IF;
-- examScore (考试分数)
IF INSERTING OR
(:NEW.examScore IS NULL AND :OLD.examScore IS NOT NULL) OR
(:OLD.examScore IS NULL AND :NEW.examScore IS NOT NULL) OR
(:OLD.examScore IS NOT NULL AND :NEW.examScore IS NOT NULL AND :OLD.examScore <> :NEW.examScore) THEN
IF :NEW.examScore IS NOT NULL THEN
:NEW.final_time := TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3');
ELSE
:NEW.final_time := NULL;
END IF;
END IF;
END;

69
trg_uf_rank_rec_dt1.SQL Normal file
View File

@ -0,0 +1,69 @@
create or replace TRIGGER trg_uf_rank_rec_dt1
BEFORE INSERT OR UPDATE ON uf_rank_rec_dt1
FOR EACH ROW
BEGIN
-- kpdfzy (专业)
IF INSERTING OR
(:NEW.kpdfzy IS NULL AND :OLD.kpdfzy IS NOT NULL) OR -- 情况1新值为空时间设为空
(:OLD.kpdfzy IS NULL AND :NEW.kpdfzy IS NOT NULL) OR -- 情况2旧值为空新值有值更新时间
(:OLD.kpdfzy IS NOT NULL AND :NEW.kpdfzy IS NOT NULL AND :OLD.kpdfzy <> :NEW.kpdfzy) THEN -- 情况3都不为空且不相等更新时间
IF :NEW.kpdfzy IS NOT NULL THEN
:NEW.professional_time := TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3');
ELSE
:NEW.professional_time := NULL;
END IF;
END IF;
-- kpdfbm (部门)
IF INSERTING OR
(:NEW.kpdfbm IS NULL AND :OLD.kpdfbm IS NOT NULL) OR
(:OLD.kpdfbm IS NULL AND :NEW.kpdfbm IS NOT NULL) OR
(:OLD.kpdfbm IS NOT NULL AND :NEW.kpdfbm IS NOT NULL AND :OLD.kpdfbm <> :NEW.kpdfbm) THEN
IF :NEW.kpdfbm IS NOT NULL THEN
:NEW.department_time := TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3');
ELSE
:NEW.department_time := NULL;
END IF;
END IF;
-- kpdfsyb (事业部)
IF INSERTING OR
(:NEW.kpdfsyb IS NULL AND :OLD.kpdfsyb IS NOT NULL) OR
(:OLD.kpdfsyb IS NULL AND :NEW.kpdfsyb IS NOT NULL) OR
(:OLD.kpdfsyb IS NOT NULL AND :NEW.kpdfsyb IS NOT NULL AND :OLD.kpdfsyb <> :NEW.kpdfsyb) THEN
IF :NEW.kpdfsyb IS NOT NULL THEN
:NEW.businessUnit_time := TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3');
ELSE
:NEW.businessUnit_time := NULL;
END IF;
END IF;
-- kpdfgs (公司)
IF INSERTING OR
(:NEW.kpdfgs IS NULL AND :OLD.kpdfgs IS NOT NULL) OR
(:OLD.kpdfgs IS NULL AND :NEW.kpdfgs IS NOT NULL) OR
(:OLD.kpdfgs IS NOT NULL AND :NEW.kpdfgs IS NOT NULL AND :OLD.kpdfgs <> :NEW.kpdfgs) THEN
IF :NEW.kpdfgs IS NOT NULL THEN
:NEW.company_time := TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3');
ELSE
:NEW.company_time := NULL;
END IF;
END IF;
-- examScore (考试分数)
IF INSERTING OR
(:NEW.examScore IS NULL AND :OLD.examScore IS NOT NULL) OR
(:OLD.examScore IS NULL AND :NEW.examScore IS NOT NULL) OR
(:OLD.examScore IS NOT NULL AND :NEW.examScore IS NOT NULL AND :OLD.examScore <> :NEW.examScore) THEN
IF :NEW.examScore IS NOT NULL THEN
:NEW.final_time := TO_CHAR(SYSTIMESTAMP, 'YYYYMMDDHH24MISSFF3');
ELSE
:NEW.final_time := NULL;
END IF;
END IF;
END;