2014-05-04 34 views
0

enter image description here如何測試生成主鍵的觸發器?

CREATE SEQUENCE EVALUATIONS_SEQ 
    INCREMENT BY 1 
    START WITH 1 ORDER; 

CREATE OR REPLACE TRIGGER NEW_EVALUATION_TRIGGER 
    BEFORE INSERT ON angajati 
    FOR EACH ROW 
    BEGIN 
    :NEW.id_angajat := evaluations_seq.NEXTVAL 
    END; 

如何測試這個觸發器?

enter image description here

+3

我首先想到的:插入行該表並查看主鍵是否增加。 –

+0

我試過了:插入angajati(nume)值('marius');並得到這個錯誤:ORA-04098:觸發'BDD23.NEW_EVALUATION_TRIGGER'是無效的,失敗的重新驗證 – mariusxd

+0

您正在使用哪個Oracle版本? ('select * from v $ version') –

回答

0

當我寫的觸發器在Oracle中創建自動遞增的值,我使用的語法:

select evaluations_seq.NEXTVAL into :NEW.id_angajat from dual; 

我還沒有使用直接分配。試試看看它是否解決了這個問題。

(我也表示深深的感謝,他們終於把這個功能直接進入語言,所以在甲骨文12不需要觸發器,只是一個default聲明create table

+0

ORA-02290:違反了檢查約束(BDD23.ANG_EMAIL_NN)。當我嘗試這個時得到這個錯誤:插入angajati(nume,id_functie)值('marius','IT_PROG'); – mariusxd

+0

@mariusxd。 。 。 (1)你不應該在已經有數據的桌子上這樣做。 (2)編輯您的問題,並在表格中包含約束條件以及列定義。 –

+0

我添加了約束。我嘗試使用另一個插入:插入到angajati(nume,email,id_functie,data_angajare,salariul)values('marius','dada','ff','06/17/1987',20000); ..我得到這個錯誤:ORA-02291:完整性約束(BDD23.ANG_FUNCTIE_FK)違反 - 父鍵未找到 – mariusxd