Giới thiệu

Xây dựng và Tối ưu hóa Trigger trong SQL Server

Florin Angelescu

Instructor

Trigger là gì?

  • Kiểu đặc biệt của stored procedure
  • Thực thi khi có sự kiện trên máy chủ cơ sở dữ liệu

Cách trigger hoạt động

Xây dựng và Tối ưu hóa Trigger trong SQL Server

Các loại trigger (theo lệnh T‑SQL)

  • Trigger DML (Data Manipulation Language)
    • Câu lệnh INSERT, UPDATE hoặc DELETE
  • Trigger DDL (Data Definition Language)
    • Câu lệnh CREATE, ALTER hoặc DROP
  • Trigger đăng nhập
    • Sự kiện LOGON
Xây dựng và Tối ưu hóa Trigger trong SQL Server

Các loại trigger (theo hành vi)

  • Trigger AFTER

    • Câu lệnh gốc được thực thi
    • Kích hoạt các câu lệnh bổ sung
  • Ví dụ tình huống dùng

    • Xây dựng lại chỉ mục sau khi chèn lớn
    • Báo cho quản trị viên khi dữ liệu được cập nhật
Xây dựng và Tối ưu hóa Trigger trong SQL Server

Các loại trigger (theo hành vi)

  • Trigger INSTEAD OF

    • Ngăn không cho thực thi câu lệnh gốc
    • Thực thi câu lệnh thay thế
  • Ví dụ tình huống dùng

    • Ngăn chèn
    • Ngăn cập nhật
    • Ngăn xóa
    • Ngăn sửa đổi đối tượng
    • Báo cho quản trị viên
Xây dựng và Tối ưu hóa Trigger trong SQL Server

Định nghĩa trigger (với AFTER)

-- Tạo trigger với tên mô tả
CREATE TRIGGER ProductsTrigger

-- Cần gắn trigger vào một bảng ON Products
-- Kiểu hành vi của trigger AFTER INSERT
-- Bắt đầu luồng xử lý của trigger AS
-- Hành động do trigger thực thi PRINT ('Đã chèn dữ liệu vào bảng Products.');
Xây dựng và Tối ưu hóa Trigger trong SQL Server

Định nghĩa trigger (với INSTEAD OF)

-- Tạo trigger với tên mô tả
CREATE TRIGGER PreventDeleteFromOrders
-- Gắn trigger vào một bảng
ON Orders
-- Kiểu hành vi của trigger
INSTEAD OF DELETE
-- Bắt đầu luồng xử lý của trigger
AS
-- Hành động do trigger thực thi
PRINT ('Bạn không được phép xóa hàng từ bảng Orders.');
Xây dựng và Tối ưu hóa Trigger trong SQL Server

AFTER vs. INSTEAD OF

CREATE TRIGGER MyFirstAfterTrigger
ON Table1
-- Kích hoạt sau 
-- sự kiện phát sinh (UPDATE)
AFTER UPDATE
AS
{trigger_actions_section};
CREATE TRIGGER MyFirstInsteadOfTrigger
ON Table2
-- Kích hoạt thay cho 
-- sự kiện phát sinh (UPDATE)
INSTEAD OF UPDATE
AS
{trigger_actions_section};
Xây dựng và Tối ưu hóa Trigger trong SQL Server

Ayo berlatih!

Xây dựng và Tối ưu hóa Trigger trong SQL Server

Preparing Video For Download...