首页 文章

Oracle 'statement level'触发器

提问于
浏览
1

我想创建一个语句级别触发器,这意味着当一个或多个行插入到表EMP中时,我只想将一条记录插入到表EMP_AUDIT中 . 例如:如果我在EMP中插入了10条记录,则只应在EMP_AUDIT表中插入1条记录 .

列没有限制 . (即可以为NULL)

我尝试使用以下触发器,但它给出了错误(2,2):PL / SQL:忽略SQL语句错误(2,14):PL / SQL:ORA-00947:值不够

CREATE OR REPLACE
    TRIGGER TRIG_EMP AFTER INSERT ON EMP
   BEGIN
    INSERT INTO EMP_AUDIT
    VALUES (TRANID,EMPNUM,SYSDATE); 
   END;
CREATE TABLE EMP
   (TRANID NUMBER,
    EMPNUM VARCHAR2(100),
    EMPLOC VARCHAR2(100));
CREATE TABLE EMP_AUDIT
   (EVENTID NUMBER,
    EMPNUM VARCHAR2(100),
    ENTRDATE DATE);

2 回答

  • 3

    语句级触发器(您拥有)无法查看插入的数据 . 毕竟,如果插入了10行,那么列应该用于审计表的值是多少?

    你需要一个行级触发器才能工作,例如:

    CREATE OR REPLACE
    TRIGGER TRIG_EMP
      AFTER INSERT ON EMP
      FOR EACH ROW
    BEGIN
      INSERT INTO EMP_AUDIT
      VALUES (:NEW.TRANID,:NEW.EMPNUM,:NEW.SYSDATE); 
    END;
    
  • 0

    使用这段代码:

    CREATE OR REPLACE TRIGGER 
    TRIG_EMP
    AFTER INSERT ON EMP
    FOR EACH ROW
    BEGIN
      INSERT INTO EMP_AUDIT
      VALUES (:NEW.TRANID,:NEW.EMPNUM,:NEW.SYSDATE);
    END;
    

相关问题