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
。开始日期可以是今天的日期,但结束日期必须显示前一天。
答案 0 :(得分:0)
由于变异表问题,所有触发器的拳头都无法工作。您不能再通过触发DML来更改表中的行级触发器中的DML或查询(如果触发器不是自治的,但这是dangeros和exceptionac情况)。如果我理解你的问题,你想保留股票变更的历史记录。最好的方法是创建PL / SQL包,将逻辑封装到过程中,并为最终用户或其他程序提供此接口。