Sử dụng trigger để audit database trong Oracle là một phương pháp hiệu quả để giám sát và ghi lại các thay đổi đối với dữ liệu trong các bảng. Trigger có thể được sử dụng để tự động ghi lại thông tin về các thao tác như INSERT, UPDATE, và DELETE vào một bảng audit. Dưới đây là các bước chi tiết để cấu hình và sử dụng trigger để audit database.
1. Tạo Bảng và bảng lưu giá trị Audit
Trước tiên, bạn cần tạo một bảng để lưu trữ các bản ghi audit. Bảng này sẽ chứa các thông tin cần thiết như tên người dùng, thời gian thao tác, loại thao tác (INSERT, UPDATE, DELETE), và các giá trị cũ và mới của các cột được thay đổi.
## bảng data:
CREATE TABLE employees (
employee_id NUMBER(6) PRIMARY KEY,
first_name VARCHAR2(20),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25) NOT NULL,
phone_number VARCHAR2(20),
hire_date DATE NOT NULL,
job_id VARCHAR2(10) NOT NULL,
salary NUMBER(8, 2),
manager_id NUMBER(6),
department_id NUMBER(4)
);
## bảng lưu giá trị audit
CREATE TABLE employees_audit (
audit_id NUMBER PRIMARY KEY,
employee_id NUMBER,
action VARCHAR2(10),
old_first_name VARCHAR2(50),
new_first_name VARCHAR2(50),
old_last_name VARCHAR2(50),
new_last_name VARCHAR2(50),
changed_by VARCHAR2(30),
changed_on DATE
);
2. Tạo Trigger
Tiếp theo, bạn tạo các trigger để tự động ghi lại các thao tác INSERT, UPDATE, và DELETE trên bảng employees.
Trigger cho thao tác INSERT
CREATE OR REPLACE TRIGGER trg_employees_insert AFTER INSERT ON employees FOR EACH ROW BEGIN INSERT INTO employees_audit (audit_id, employee_id, action, new_first_name, new_last_name, changed_by, changed_on) VALUES (employees_audit_seq.NEXTVAL, :NEW.employee_id, 'INSERT', :NEW.first_name, :NEW.last_name, USER, SYSDATE); END; /
Trigger cho thao tác UPDATE
CREATE OR REPLACE TRIGGER trg_employees_update AFTER UPDATE ON employees FOR EACH ROW BEGIN INSERT INTO employees_audit (audit_id, employee_id, action, old_first_name, new_first_name, old_last_name, new_last_name, changed_by, changed_on) VALUES (employees_audit_seq.NEXTVAL, :OLD.employee_id, 'UPDATE', :OLD.first_name, :NEW.first_name, :OLD.last_name, :NEW.last_name, USER, SYSDATE); END; /
Trigger cho thao tác DELETE
CREATE OR REPLACE TRIGGER trg_employees_delete AFTER DELETE ON employees FOR EACH ROW BEGIN INSERT INTO employees_audit (audit_id, employee_id, action, old_first_name, old_last_name, changed_by, changed_on) VALUES (employees_audit_seq.NEXTVAL, :OLD.employee_id, 'DELETE', :OLD.first_name, :OLD.last_name, USER, SYSDATE); END; /
3. Tạo Sequence cho audit_id
Sequence giúp tạo ra các giá trị duy nhất cho cột audit_id trong bảng audit.
CREATE SEQUENCE employees_audit_seq
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;
4. Kiểm tra Hoạt động của Trigger
Thực hiện một số thao tác trên bảng employees và kiểm tra các bản ghi audit trong bảng employees_audit.
INSERT INTO employees (employee_id, first_name, last_name, email, job_id, hire_date) VALUES (102, ‘John’, ‘Doe’,’duongnv@gmail.com’,’33’,sysdate);
UPDATE employees SET first_name = ‘Jane NANNA’ WHERE employee_id = 102;
DELETE FROM employees WHERE employee_id = 102;
DELETE FROM employees WHERE employee_id = 101;
Kiểm tra các bản ghi audit
SELECT * FROM employees_audit;

- Operating System là gì?
- Hướng dẫn đổi URL đăng nhập WordPress để tránh hacker
- Tạo lại controlfile khi bị mất hỏng
- Q44 Which three statements are true about single row functions?
- Q2. While backing up to an SBT channel, you determine that the read phase of your compressed Recovery Manager (RMAN) incremental level 0 backup is a bottleneck

WP Rocket
LayerSlider Premium
ARMember
Go Pricing
Vlogger - Professional Video & Tutorials WordPress Theme
Photoshare - Blog Story & Photos Download WordPress Theme
Almighty Wordpress Theme
MyThemeShop Fashionblog WordPress Theme
Gutentype | 100% Gutenberg Blog Theme + Elementor
Utouch - Multi-Purpose Business and Digital Technology WordPress Theme
Sleek | Responsive & Creative WordPress Blog Theme
Ewebot - Marketing & SEO Digital Agency WordPress Theme 3.0.4
Hestia Pro Themes
Affiliate Newspaperly Wordpress Theme
Eskimo - Minimal Personal WordPress Blog & Shop Theme
Activello Wordpress Theme
Contentberg - Content Marketing & Personal Blog for WordPress
7band - Musical Instruments Shop Shopify Theme
Pin = Pinterest Style / Personal Masonry Blog / Front-end Submission
Vlog - Video Blog & Podcast WordPress Theme
jannifer hamis health coach healthy lifestyle blog
Adaptable Notes Wordpress Theme
Ncmaz - News Magazine Full Site Editing WordPress Block Theme
CheerUp - Food, Blog & Magazine for WordPress