PL/SQL - Các Triggers: Hướng Dẫn Thân Thiện Về Tự Động Hóa Cơ Sở Dữ Liệu
Xin chào các pháp sư cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ khám phá thế giới kỳ diệu của các triggers PL/SQL. Đừng lo lắng nếu bạn mới bắt đầu lập trình - tôi sẽ là người bạn tin cậy dẫn đường cho bạn trong chuyến phiêu lưu này. Cuối cùng của bài hướng dẫn này, bạn sẽ có thể tạo triggers như một chuyên gia!
Triggers Là Gì?
Hãy tưởng tượng bạn là một thủ thư (hãy theo tôi nhé). Mỗi lần một cuốn sách được mượn, bạn cần cập nhật một日志, kiểm tra xem nó có muộn hạn không, và có thể gửi nhắc nhở cho người mượn. Việc làm này thủ công cho mỗi cuốn sách sẽ rất mệt mỏi! Đó là lúc triggers ra đời.
Trong thế giới cơ sở dữ liệu, triggers giống như những sinh vật nhỏ bé giúp đỡ tự động thực hiện các hành động khi các sự kiện nhất định xảy ra. Chúng là các đoạn mã "kích hoạt" để phản ứng với các hoạt động cơ sở dữ liệu cụ thể.
Tạo Triggers: Hãy Bắt Đầu!
Bây giờ, hãy tạo trigger đầu tiên của chúng ta. Chúng ta sẽ bắt đầu đơn giản và dần dần nâng cao.
Cấu Trúc Cơ Bản Của Trigger
Dưới đây là cấu trúc cơ bản của một trigger:
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
[FOR EACH ROW]
[WHEN condition]
DECLARE
-- Khai báo biến
BEGIN
-- Thân trigger
EXCEPTION
-- Xử lý ngoại lệ
END;
/
Đừng để điều này làm bạn sợ hãi! Chúng ta sẽ phân tích nó từng phần.
Ví Dụ 1: Trigger "Hello, World!" Đơn Giản
Hãy tạo một trigger chào "Hello, World!" mỗi khi một hàng mới được chèn vào bảng:
CREATE OR REPLACE TRIGGER hello_world_trigger
AFTER INSERT ON employees
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, World! A new employee was added!');
END;
/
Điều gì đang xảy ra ở đây?
-
CREATE OR REPLACE TRIGGER
: Điều này cho biết chúng ta đang tạo một trigger mới (hoặc thay thế một trigger hiện có). -
AFTER INSERT ON employees
: Trigger của chúng ta sẽ kích hoạt sau khi một hàng mới được chèn vào bảng 'employees'. -
BEGIN...END
: Đây là nơi chúng ta đặt logic của trigger. -
DBMS_OUTPUT.PUT_LINE
: Đây chỉ là một cách để in văn bản.
Ví Dụ 2: Ghi Lại Thay Đổi
Hãy tạo một trigger hữu ích hơn để ghi lại các thay đổi trong bảng 'employees':
CREATE OR REPLACE TRIGGER log_salary_changes
AFTER UPDATE OF salary ON employees
FOR EACH ROW
BEGIN
INSERT INTO salary_change_log (employee_id, old_salary, new_salary, change_date)
VALUES (:OLD.employee_id, :OLD.salary, :NEW.salary, SYSDATE);
END;
/
Điều gì mới ở đây?
-
AFTER UPDATE OF salary
: Trigger này chỉ kích hoạt khi cột 'salary' được cập nhật. -
FOR EACH ROW
: Điều này có nghĩa là trigger sẽ kích hoạt cho mỗi hàng bị ảnh hưởng bởi UPDATE. -
:OLD
và:NEW
: Những điều này tham chiếu đến giá trị cũ và mới của hàng được cập nhật.
Kích Hoạt Trigger: Làm Cho Phép Thực Hiện
Bây giờ chúng ta đã tạo triggers, làm thế nào để chúng kích hoạt? Đơn giản! Bằng cách thực hiện các hoạt động cơ sở dữ liệu mà chúng đang theo dõi.
Ví Dụ 3: Kích Hoạt Triggers
Hãy xem triggers của chúng ta trong hành động:
-- Điều này sẽ kích hoạt trigger 'hello_world_trigger'
INSERT INTO employees (employee_id, name, salary)
VALUES (1, 'John Doe', 50000);
-- Điều này sẽ kích hoạt trigger 'log_salary_changes'
UPDATE employees
SET salary = 55000
WHERE employee_id = 1;
Khi bạn chạy các lệnh này, đằng sau cảnh, triggers của chúng ta sẽ vào hành động!
Loại Triggers: Bảng Tham Khảo Nhanh
Dưới đây là bảng tham khảo nhanh các loại triggers khác nhau:
Loại Trigger | Mô Tả | Ví Dụ Sử Dụng |
---|---|---|
BEFORE | Kích hoạt trước hành động kích hoạt | Xác minh hoặc thay đổi dữ liệu đầu vào trước khi nó được chèn |
AFTER | Kích hoạt sau hành động kích hoạt | Ghi lại thay đổi hoặc cập nhật bảng liên quan |
INSERT | Kích hoạt trên các hoạt động INSERT | Tự động tạo các bản ghi liên quan |
UPDATE | Kích hoạt trên các hoạt động UPDATE | Theo dõi thay đổi dữ liệu theo thời gian |
DELETE | Kích hoạt trên các hoạt động DELETE | duy trì tính toàn vẹn tham chiếu |
INSTEAD OF | Sử dụng với các view để xác định các hoạt động.insert, update hoặc delete tùy chỉnh | Thực hiện các cập nhật view phức tạp |
Kết Luận: Bạn Bây Giờ Là Một Học Viên Trigger!
Chúc mừng! Bạn đã bước những bước đầu tiên vào thế giới của các triggers PL/SQL. Chúng ta đã覆盖 các cơ bản của việc tạo triggers, thấy chúng trong hành động, và thậm chí đã nhìn qua các loại triggers khác nhau.
Nhớ rằng, triggers là những công cụ mạnh mẽ, nhưng với quyền lực lớn đi kèm với trách nhiệm lớn. Sử dụng chúng một cách thông minh, và chúng sẽ làm cho công việc của bạn cơ sở dữ liệu thông minh hơn, không phải khó khăn hơn.
Tiếp tục thực hành, luôn tò mò, và trước khi bạn biết, bạn sẽ trở thành một maestro trigger! Chúc may mắn, các pháp sư cơ sở dữ liệu tương lai!
Credits: Image by storyset