我想在table
中添加一些值,特别是由我正在使用的DML
操作决定的值:
- 如果我是inserting
行,我需要把我INSERT
放到一个表中(我用它来记录用户做的所有操作)
- 如果我是deleting
,那么DELETE
- 当我updating
时,同样的事情。
我的代码是我insert
上的table
行的以下代码:
INSERT INTO AUD(usr, date, op, other_fields)
VALUES
(USER, SYSDATE,
CASE op
WHEN INSERTING THEN 'INSERT'
WHEN DELETING THEN 'DELETE'
WHEN UPDATING THEN 'UPDATE'
END,
:OLD.other_fields
:NEW.other_fields);
但是当我在触发器中使用它并编译它时,它会显示ORA-00084
错误并忽略我的触发器的某些前一行。提前致谢
我也试过了DECODE
,但它也向我显示了同样的错误。
答案 0 :(得分:0)
你可以试试这个:
...
l_op aud.op%type;
begin
...
if INSERTING then
l_op := 'INSERT';
...
elsif UPDATING then
l_op := 'UPDATE';
...
end if;
...
if l_op in ('INSERT', 'DELETE')
or l_op = 'UPDATE'
and (nvl(:old.fied1, 0) != nvl(:new.fied1, 0)
or nvl(:old.fied2, 0) != nvl(:new.fied2, 0)
...
)
then
INSERT INTO AUD(usr, date, op, other_fields)
values (USER, SYSDATE, l_op, :OLD.other_fields, :NEW.other_fields);
end if;
...