2013-10-14 93 views
1

我試圖構建一個觸發器,它將特定的更新行插入到另一個表中,但我無法構建它。oracle觸發器選擇更新的行

這是我是能夠建立:

CREATE OD REPLACE TRIGGER Z_ONUPDATELOGIN 
AFTER UPDATE OF LAST_LOGGED_IN_DATE ON CMN_SEC_USERS csu 
BEGIN 
    INSERT INTO Z_LOGIN (name, login_date) 
    select first_name||last_name, 
      last_logged_in_date 
     from cmn_sec_users usr 
    where usr.id=csu.id; 
END; 

回答

2

當你處理觸發器可以使用:NEW和:OLD關鍵字與正在修改的行的新舊值工作。在你的情況下試試這個:

CREATE OR REPLACE TRIGGER Z_ONUPDATELOGIN 
    AFTER UPDATE OF LAST_LOGGED_IN_DATE ON CMN_SEC_USERS 
    FOR EACH ROW 
BEGIN 
    INSERT INTO Z_LOGIN (name, login_date) 
    VALUES (:NEW.first_name || :NEW.last_name, 
      :NEW.last_logged_in_date); 
END; 
+1

-1,因爲這是行不通的。您只能在行級觸發器中使用NEW和OLD(「FOR EACH ROW」)。我看到兩個額外的語法錯誤。 –

+0

現在呢? – mucio

+0

儘管我看到你的答案被接受,因爲他/她收到了足夠的線索,但仍然不好。如果你自己創建一個虛擬表和觸發器,你會看到語法錯誤。它可以讓你發佈測試答案。 –