ZhangQiangEcologyKit/trg_uf_competency_evalu_dt1.SQL
liozvqe acbf9c9ec3 更新两个触发器
更新两个触发器
2025-08-30 14:16:07 +08:00

69 lines
2.7 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;