Hotline: 0919 365 363; Email: daotao@r2s.edu.vn

Trigger trong SQL Server 2014

Trigger trong SQL Server 2014

Kiến thức hữu ích

Trigger trong SQL Server 2014

Trong SQL Server 2014, Trigger là một đối tượng cơ sở dữ liệu được sử dụng để thực thi các hành động tự động khi một sự kiện nào đó xảy ra trên cơ sở dữ liệu, ví dụ như thêm, sửa hoặc xóa dữ liệu từ một bảng. 

Trigger giúp đảm bảo tính toàn vẹn của dữ liệu và thực hiện các hành động được định nghĩa trước một cách tự động. Vì vậy hãy cùng khám phá về đối tượng này trong bài viết dưới đây của R2S nhé!

Trigger trong SQL Server 2014 là gì?

Trigger là một loại stored procedure không có tham số.

Trigger trong SQL Server 2014 là gì?
Trigger trong SQL Server 2014 là gì?

Trigger được kích hoạt tự động khi một trong ba câu lệnh Insert, Update, Delete thay đổi dữ liệu trên bảng mà trigger được gắn vào.

Khi nào nên sử dụng trigger?

Trigger thường được sử dụng để kiểm tra ràng buộc (check constraints) trên nhiều quan hệ (nhiều bảng/table) hoặc trên nhiều dòng (nhiều record) của bảng.

Ví dụ, một chi tiết hoá đơn không được nhiều hơn 10 hoá đơn (tức là trong bảng CTHD không được vượt quá 10 SoHD).

Khi nào nên sử dụng trigger?
Khi nào nên sử dụng trigger?

Trigger trong sql server 2014 – Tạo trigger

Cú pháp tạo trigger trong sql server

CREATE TRIGGER tên_trigger ON tên_bảng
FOR {DELETE, INSERT, UPDATE}
AS 
  câu_lệnh_sql

Một số lưu ý

  • Khi trigger được thực hiện, SQL tự động tạo ra 2 bảng tạm với cùng cấu trúc với bảng chứa trigger. 
  • Bảng INSERTED chứa dữ liệu mới khi chúng ta thực thi câu lệnh Insert hoặc câu lệnh Update. 
  • Bảng DELETED chứa những bản ghi bị xoá khi chúng ta thực thi câu lệnh Delete hoặc chứa dữ liệu cũ khi chúng ta thực thi câu lệnh Update.

Trigger trong sql server 2014 – Khi thêm dữ liệu

Tình huống: 

Kiểm tra ràng buộc một CTHD không chứa nhiều hơn 10 SoHD. Trong hình, chúng tôi đang chọn SoHD là 10249. Hiện tại trong bảng CTHD trước khi thêm đang có 2. Dòng màu vàng là dữ liệu chúng ta muốn thêm vào.

Trigger trong sql server 2014 – Khi thêm dữ liệu
Khi thêm dữ liệu

Câu lệnh tạo trigger

Create Trigger tr_SoCTHD On CTHD For Insert
As
 If (Select Count(a.SoHD)
     From CTHD a Inner Join INSERTED b On a.SoHD = b.SoHD) > 10
 Begin
   Print 'So CTHD Khong the > 10'
   RollBack Tran
 End

Phép kết hợp giữa 2 bảng được gọi là Inner Join. Để hiển thị thông báo đến người dùng, ta sử dụng lệnh Print. Để ngăn chặn xử lý thêm mới dữ liệu, ta sử dụng lệnh RollBack Tran.

Trigger trong sql server 2014 – Xoá dữ liệu

Tình huống: 

Khi xóa một dòng trong bảng Chi tiết hóa đơn, chúng ta cần tăng số lượng trong bảng Mặt hàng như sau:

Xoá dữ liệu
Xoá dữ liệu

Câu lệnh tạo trigger

Create Trigger tr_XoaCTHD On CTHD For Delete
As
  Update MATHANG Set SoTon = SoTon + SL From DELETED 
  Where MATHANG.MaMH = DELETED.MaMH

Cập nhật dữ liệu

Tình huống

Khi thay đổi cột số lượng trên bảng chi tiết hóa đơn, chúng ta phải cập nhật lại dữ liệu cho cột số tồn trong bảng mặt hàng.

Cập nhật dữ liệu
Cập nhật dữ liệu

Câu lệnh tạo trigger

Create Trigger tr_SuaCTHD On CTHD For Update 
As
Declare @D int

Select @D = Count(*)
From MatHang a, DELETED b, INSERTED c
Where a.MaMH = b.MaMH
      And a.MaMH = c.MaMH 
      And SoTon + b.SL - c.SL < 0

If (@D > 0 )
 Begin
   Print 'Không đủ hàng để bán'
   RollBack Tran
   Return
 End

--Cập nhật số lượng tồn trong bảng MATHANG
Update MatHang Set SoTon = SoTon + b.SL - c.SL
From MatHang a, DELETED b, INSERTED c
Where a.MaMH = b.MaMH And a.MaMH = c.MaMH

Trigger trong sql server 2014 – Bài tập thực hành

Sử dụng cơ sở dữ liệu QuanLyBanHang

Trigger trong sql server 2014 – Bài tập thực hành
Bài tập thực hành

Tao các trigger theo yêu cầu bên dưới

  • Câu 1. Tạo trigger khi cập nhật hoặc thêm dữ liệu vào bảng TONKHO, cột SLCuoi sẽ được tính toán theo công thức SLCuoi = SLDau + TongSLN – TongSLX.
  • Câu 2. Tạo trigger khi cập nhật cột SLNhap trong bảng CTPNHAP, cột TongSLN trong bảng TONKHO sẽ được cập nhật theo.
  • Câu 3. Tạo trigger khi cập nhật cột SLXuat trong bảng CTPXUAT, cột TongSLX trong bảng TONKHO sẽ được cập nhật theo.
  • Câu 4. Tạo trigger khi cập nhật hoặc thêm dữ liệu vào cột SLNhap trong bảng CTPNHAP, tổng số lượng nhập phải nhỏ hơn hoặc bằng tổng số lượng đặt trong bảng CTDONDH.
  • Câu 5. Tạo trigger khi xóa một CTPNHAP, cột TongSLN trong bảng TONKHO sẽ được cập nhật tương ứng.

Kết luận

Như vậy, bạn có thể thấy Trigger trong SQL Server 2014 có vai trò cực kỳ quan trọng. Do đó, hãy tìm hiểu thật kỹ về các cú pháp để có thể thực hiện các thao tác thật đơn giản nhé!

Bài viết gốc được đăng tại: giasutinhoc.vn

Alert: You are not allowed to copy content or view source !!