2013-10-14 89 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

尽管我看到你的答案被接受,因为他/她收到了足够的线索,但仍然不好。如果你自己创建一个虚拟表和触发器,你会看到语法错误。它可以让你发布测试答案。 –