我想创建一个Statement level Trigger,这意味着我想在表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);
答案 0 :(得分: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;
答案 1 :(得分: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;