创建触发器Dept表中的数据比较重要,希望对该表进行的更新及删除操作都要有记录,但只记录所做的操作,不记录用户具体更新及删除的具体数据,请提出解决方案。
时间: 2024-02-27 09:52:29 浏览: 48
可以通过创建 Oracle 数据库的触发器来记录对 `Dept` 表的更新和删除操作,但不记录具体数据的更改情况。具体操作步骤如下:
1. 创建一个用于记录操作历史的表
```sql
CREATE TABLE dept_history (
id NUMBER(10) PRIMARY KEY,
action VARCHAR2(10) NOT NULL,
date DATE DEFAULT SYSDATE NOT NULL,
user_id NUMBER(10) NOT NULL
);
```
该表用于记录 `Dept` 表中的更新和删除操作,包括操作类型、操作时间和操作用户的 ID。
2. 创建一个触发器
```sql
CREATE OR REPLACE TRIGGER trg_dept_history
AFTER DELETE OR UPDATE ON dept
FOR EACH ROW
BEGIN
INSERT INTO dept_history (id, action, user_id)
VALUES (:old.dept_id, CASE WHEN DELETING THEN 'DELETE' ELSE 'UPDATE' END, USER);
END;
```
该触发器在 `Dept` 表中进行删除和更新操作时自动执行,并将操作类型、操作时间和操作用户 ID 插入到 `dept_history` 表中。
需要注意的是,该触发器只记录操作类型和操作用户 ID,不记录具体数据的更改情况。如果需要记录具体数据的更改情况,可以在触发器中添加更多的业务逻辑。
阅读全文