您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Oracle中使用触发器更改日期时出现问题

在Oracle中使用触发器更改日期时出现问题

您想要这样的东西:

CREATE OR REPLACE TRIGGER TRIGGER_D
BEFORE
INSERT OR UPDATE ON CONTRACTS
FOR EACH ROW
DECLARE
BEGIN
  UPDATE CONTRACTS
  SET    ENDDATE   = :NEW.STARTDATE - INTERVAL '1' DAY
  WHERE  CLIENTID  = :NEW.CLIENTID
  AND    ENDDATE   > :NEW.STARTDATE
  AND    STARTDATE < :NEW.STARTDATE;
END;

但是,它正在更新触发器正在监视的表,并且该触发器似乎将导致更新,该更新将再次调用该触发器并得到一个突变表错误

您最好将业务逻辑包装在存储过程中,在该存储过程中可以对前几行执行更新,然后执行插入/更新。然后,与其直接在表上执行DML语句,不如调用存储过程。

Oracle 2022/1/1 18:52:58 有535人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶