Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
669 views
in Technique[技术] by (71.8m points)

sql - Solution of this easy trigger

I have a problem with my trigger(Im new with oracle) With this trigger I want when insert a new contract and this contracts have a start_date which is before that end_date of the other contract of this user, the trigger have to change the old end_date to the start_date of the new contract.

Here is my code:

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;
    /

And sql developres says that subquery not allowed in this context. Im sure that is to repair but I cant solve it because my level is so low. I hope you help me:) Thanks

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

1.

SELECT DISTINCT END_DATE FROM CONTRACTS WHERE SSN = NEW.SSN May Return one or more record which may cause proble.

2.

selecting from same table within trigger on which trigger is created may cause problem.

Thanks


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...