Các trường hợp dùng trigger INSTEAD OF (DML)

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

Florin Angelescu

Instructor

Mục đích chung của trigger INSTEAD OF

  • Ngăn thao tác xảy ra
  • Kiểm soát câu lệnh cơ sở dữ liệu
  • Bảo đảm toàn vẹn dữ liệu
Xây dựng và Tối ưu hóa Trigger trong SQL Server

Trigger ngăn thay đổi

CREATE TRIGGER PreventProductChanges
ON Products
INSTEAD OF UPDATE
AS
    RAISERROR ('Updates of products are not permitted.
                Contact the database administrator if a change is needed.', 16, 1);
Xây dựng và Tối ưu hóa Trigger trong SQL Server

Trigger ngăn và thông báo

CREATE TRIGGER PreventCustomersRemoval
ON Customers
INSTEAD OF DELETE
AS
    DECLARE @EmailBodyText NVARCHAR(50) =
                       (SELECT 'User "' + ORIGINAL_LOGIN() +
                        '" tried to remove a customer from the database.');

    RAISERROR ('Customer entries are not subject to removal.', 16, 1);

    EXECUTE SendNotification @RecipientEmail = '[email protected]'
                              ,@EmailSubject = 'Suspicious database behavior'
                              ,@EmailBody = @EmailBodyText;
Xây dựng và Tối ưu hóa Trigger trong SQL Server

Trigger với logic điều kiện

CREATE TRIGGER ConfirmStock
ON Orders
INSTEAD OF INSERT
AS
    IF EXISTS (SELECT * FROM Products AS p
               INNER JOIN inserted AS i ON i.Product = p.Product
               WHERE p.Quantity < i.Quantity)
        RAISERROR ('You cannot place orders when there is no product stock.', 16, 1);
    ELSE
        INSERT INTO dbo.Orders (Customer, Product, Quantity, OrderDate, TotalAmount)
        SELECT Customer, Product, Quantity, OrderDate, TotalAmount FROM inserted;
Xây dựng và Tối ưu hóa Trigger trong SQL Server

Trigger với logic điều kiện

Logic điều kiện cho Trigger

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

Hãy thực hành!

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

Preparing Video For Download...