2017-05-30 51 views
2

這是我的代碼:如何繪製觸發pl/sql觸發器的行?

CREATE OR REPLACE TRIGGER TR_DEL 
AFTER INSERT OR UPDATE 
ON DIZIONARIO_CHIAVI_DA_ESCLUDERE 
FOR EACH ROW 
DECLARE 
    CURSOR c_cursore_prendi_riga IS 
     SELECT CURRICULUM_CHIAVE_RICERCA 
     FROM PERSONA; 
    myCursor PERSONA.CURRICULUM_CHIAVE_RICERCA%TYPE; 
BEGIN 
    OPEN c_cursore_prendi_riga; 
    LOOP 
    FETCH c_cursore_prendi_riga INTO myCursor; 
    EXIT WHEN c_cursore_prendi_riga%NOTFOUND; 
    dbms_output.put_line('oo='|| myCursor); 

    -- Here I need it  

    END LOOP; 
    CLOSE c_cursore_prendi_riga; 
END; 

我需要開始觸發行,感謝

+1

您引用列/列一行使用':new'或':old'僞記錄觸發觸發器。例如':new.col_name'。 –

+0

它的工作原理!謝謝! –

回答

1

尼古拉斯·克拉斯諾夫是正確的,把這個在回答中:

:新:老的用作僞記錄。文檔是在這裏:

https://docs.oracle.com/database/121/TDDDG/tdddg_triggers.htm#TDDDG50000

和這裏的這些僞記錄的解釋:

https://docs.oracle.com/database/121/LNPLS/triggers.htm#LNPLS99955

最重要的是:僞記錄不能使用像「正常」的記載。你必須命名每列...

例如,你不能使用:

my_special_function(:new); 

你西港島線必須創建一個「真實」的記載:

declare 
    myrec mytable%rowtype; 
begin 
    myrec.id := :new.id; 
    myrec.name := :new.name; 
    myrec.birthdate := :new.birthdate; 
    etc etc etc 
    my_special_function(myrec); 
end