【发布时间】:2016-07-22 05:50:47
【问题描述】:
我的触发器有问题(我是 oracle 新手) 有了这个触发器,我想在插入新合同并且该合同的 start_date 早于该用户的另一个合同的 end_date 时,触发器必须将旧的 end_date 更改为新合同的 start_date。
这是我的代码:
CREATE OR REPLACE TRIGGER Date_contracts
BEFORE INSERT OR UPDATE OF START_DATE ON CONTRACTS
FOR EACH ROW
BEGIN
IF :NEW.START_DATE < (SELECT DISTINCT END_DATE FROM CONTRACTS WHERE SSN = NEW.SSN)
THEN OLD.END_DATE := NEW.START_DATE;
END IF;
END;
/
并且 sql developers 说在这种情况下不允许子查询。我确定是要修复,但我无法解决,因为我的水平太低了。我希望你能帮助我:) 谢谢
【问题讨论】:
-
这是一个警告,显示 它可能返回超过 1 条记录
-
如果您认为可以更改旧的开始日期,那么您对触发器的理解存在根本性的误解。