SQL Oracle触发器更改日期

时间:2014-01-16 14:27:20

标签: sql oracle triggers oracle-sqldeveloper

CREATE OR REPLACE TRIGGER shares_to_amount
AFTER INSERT OR UPDATE OF issued ON shares_amount
FOR EACH ROW
BEGIN
  INSERT INTO shares_amount(
    share_issue_id,
    share_id,
    issued,
    date_start,
    date_end
  ) VALUES ( 
     :OLD.share_issue_id,
     :OLD.share_id,
     :NEW.issued,
     :NEW.date_start,
     :((NEW.date_start)-1).date_end
   );
END;

我想在将新的共享值发布到'已发布'时将date_end更改为date_new date -1。开始日期可以是今天的日期,但结束日期必须显示前一天。

1 个答案:

答案 0 :(得分:0)

由于变异表问题,所有触发器的拳头都无法工作。您不能再通过触发DML来更改表中的行级触发器中的DML或查询(如果触发器不是自治的,但这是dangeros和exceptionac情况)。如果我理解你的问题,你想保留股票变更的历史记录。最好的方法是创建PL / SQL包,将逻辑封装到过程中,并为最终用户或其他程序提供此接口。