我想创建一个 Oracle 触发器,它将在“用户”表上的更新上执行
用户
- ID
- 部门
- 特权
- 散列键
然后,Oracle 触发器会将行添加到下表“Audit”中
审计
- 用户身份
- 字段名称
- Old_Val
- 新值
- 日期
它将记录特定字段的旧值和新值的更改以及更改时间。
我的问题是:
- 它如何知道要更新哪个字段,然后在审计表中创建一行来记录该更改字段的旧值和新值
- 在更新事务中更新多个字段时,如何让触发器工作?
Oracle 触发器会为此工作吗?
到目前为止,这是我的代码(它不起作用,因为我不知道该放什么作为字段的参数)
代码
CREATE OR REPLACE TRIGGER USER_UPDATE_TRG
BEFORE UPDATE OF USER_ID,Department, Privilege, Hashkey
ON USER
BEGIN
INSERT INTO AUDIT
(
USER_ID,
FIELD_NAME,
OLD_VAL,
NEW_VAL,
CHANGED_DATE
)
VALUES
(
USER_ID,
<what do I put here for Field Name?,
:old.Field,
:new.Field,
sysdate
)
END;