Trigger trong SQL là một khái niệm quan trọng, cho phép tự động thực hiện các hành động dựa trên các sự kiện trong cơ sở dữ liệu. Bài viết này cung cấp những Bài Tập Về Trigger Trong Sql Có Lời Giải chi tiết, giúp bạn nắm vững kiến thức và áp dụng vào thực tế. Chúng ta sẽ cùng nhau tìm hiểu trigger là gì, cách tạo trigger, và các ví dụ thực tế về bài tập trigger trong SQL. Xem thêm bài tập sql cos lời giải.
Trigger trong SQL là gì?
Trigger, hay còn gọi là bộ kích hoạt, là một đối tượng đặc biệt trong cơ sở dữ liệu SQL được thiết kế để thực thi tự động một hoặc nhiều câu lệnh SQL khi một sự kiện cụ thể xảy ra trên một bảng hoặc view. Sự kiện này có thể là INSERT, UPDATE, hoặc DELETE. Trigger hoạt động như một “người gác cổng”, giám sát các thay đổi dữ liệu và thực hiện các hành động tương ứng.
Các loại Trigger trong SQL
Có ba loại trigger chính trong SQL:
- Trigger AFTER: Thực thi sau khi sự kiện kích hoạt hoàn thành.
- Trigger INSTEAD OF: Thực thi thay thế cho sự kiện kích hoạt.
- Trigger FOR: Tương tự như trigger AFTER.
Cú pháp tạo Trigger
CREATE TRIGGER ten_trigger
{BEFORE | AFTER | INSTEAD OF} {INSERT | UPDATE | DELETE}
ON ten_bang
[FOR EACH ROW]
[WHEN dieu_kien]
BEGIN
-- Các câu lệnh SQL cần thực thi
END;
Bài tập Trigger SQL có lời giải
Bài tập 1: Tự động cập nhật số lượng sản phẩm khi có đơn hàng mới
Yêu cầu: Tạo một trigger tự động cập nhật số lượng sản phẩm trong bảng SanPham
mỗi khi có đơn hàng mới được thêm vào bảng DonHang
.
CREATE TRIGGER cap_nhat_so_luong
AFTER INSERT ON DonHang
FOR EACH ROW
BEGIN
UPDATE SanPham
SET so_luong = so_luong - NEW.so_luong_mua
WHERE ma_san_pham = NEW.ma_san_pham;
END;
Giải thích: Trigger cap_nhat_so_luong
được kích hoạt sau mỗi lần thêm một dòng mới vào bảng DonHang
. Cụ thể, trigger này sẽ trừ số lượng sản phẩm đã mua (NEW.so_luong_mua
) từ số lượng sản phẩm hiện có trong bảng SanPham
dựa trên mã sản phẩm (NEW.ma_san_pham
).
Bài tập 2: Ghi log các thay đổi trên bảng nhân viên
Yêu cầu: Tạo một trigger ghi lại tất cả các thay đổi (INSERT, UPDATE, DELETE) trên bảng NhanVien
vào bảng NhanVienLog
.
CREATE TRIGGER ghi_log_nhan_vien
AFTER INSERT OR UPDATE OR DELETE ON NhanVien
FOR EACH ROW
BEGIN
INSERT INTO NhanVienLog (ma_nhan_vien, hanh_dong, thoi_gian)
VALUES (OLD.ma_nhan_vien, CASE WHEN inserting THEN 'INSERT' WHEN updating THEN 'UPDATE' ELSE 'DELETE' END, NOW());
END;
Bài tập trigger SQL ghi log thay đổi bảng nhân viên
Giải thích: Trigger ghi_log_nhan_vien
được kích hoạt sau mỗi lần INSERT, UPDATE hoặc DELETE trên bảng NhanVien
. Trigger sẽ ghi lại mã nhân viên, hành động (INSERT, UPDATE, DELETE), và thời gian thay đổi vào bảng NhanVienLog
. Tham khảo thêm bài tập trigger sql có lời giải.
Chuyên gia cơ sở dữ liệu, Nguyễn Văn A, chia sẻ: “Trigger là một công cụ mạnh mẽ trong SQL, giúp tự động hóa các tác vụ và đảm bảo tính toàn vẹn dữ liệu.”
Bài tập 3: Kiểm tra điều kiện trước khi thêm dữ liệu
Yêu cầu: Tạo trigger kiểm tra tuổi nhân viên trước khi thêm vào bảng NhanVien
. Tuổi phải lớn hơn hoặc bằng 18.
CREATE TRIGGER kiem_tra_tuoi
BEFORE INSERT ON NhanVien
FOR EACH ROW
BEGIN
IF NEW.tuoi < 18 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Tuổi nhân viên phải lớn hơn hoặc bằng 18.';
END IF;
END;
Bài tập trigger SQL kiểm tra điều kiện trước khi thêm dữ liệu
Giải thích: Trigger kiem_tra_tuoi
được kích hoạt trước khi thêm một dòng mới vào bảng NhanVien
. Trigger sẽ kiểm tra xem tuổi của nhân viên mới (NEW.tuoi
) có lớn hơn hoặc bằng 18 hay không. Nếu không, trigger sẽ phát sinh lỗi và ngăn chặn việc thêm dữ liệu. Bạn có thể xem thêm bài tập sql server có lời giải và bài tập csdl có lời giải.
Chuyên gia Lê Thị B, nhấn mạnh: “Việc sử dụng trigger BEFORE giúp ngăn chặn các dữ liệu không hợp lệ ngay từ đầu, đảm bảo tính nhất quán của cơ sở dữ liệu.”
Kết luận
Bài viết đã cung cấp một số bài tập về trigger trong SQL có lời giải, giúp bạn hiểu rõ hơn về cách sử dụng trigger trong việc quản lý và đảm bảo tính toàn vẹn dữ liệu. Việc thành thạo trigger sẽ giúp bạn xây dựng các ứng dụng cơ sở dữ liệu hiệu quả và mạnh mẽ hơn. Hy vọng bài viết này hữu ích cho bạn trong việc học và áp dụng trigger trong SQL.
Khi cần hỗ trợ hãy liên hệ Số Điện Thoại: 02033846993, Email: [email protected] Hoặc đến địa chỉ: X2FW+GGM, Cái Lân, Bãi Cháy, Hạ Long, Quảng Ninh, Việt Nam. Chúng tôi có đội ngũ chăm sóc khách hàng 24/7.