Use case pemicu AFTER (DML)

Membangun dan Mengoptimalkan Trigger di SQL Server

Florin Angelescu

Instructor

Menyimpan riwayat perubahan baris

SELECT * FROM Customers;
| Customer        | ContractID   | Address               | PhoneNo        |
|-----------------|--------------|-----------------------|----------------|
| Every Fruit     | ABF138256334 | 2522 Consectetuer St. | 1-307-717-2294 |
| eFruits         | 691C37BC3CED | 1908 Fames Street     | 1-854-241-5573 |
| Healthy Choices | 435ADE342265 | 2826 Mauris Rd.       | 1-369-765-1647 |
| Health Mag      | 73F6095C6930 | 1080 Aliquet. St.     | 1-634-676-3716 |
| Fruit Mania     | 5CC27CBC78BA | 311 In Avenue         | 1-790-501-4629 |
Membangun dan Mengoptimalkan Trigger di SQL Server

Menyimpan riwayat perubahan baris

SELECT * FROM CustomersHistory;
| Customer        | ContractID   | Address               | PhoneNo        | ChangeDate |
|-----------------|--------------|-----------------------|----------------|------------|
| Every Fruit     | ABF138256334 | 2522 Consectetuer St. | 1-307-717-2294 | 2017-05-03 |
| eFruits         | 691C37BC3CED | 1908 Fames Street     | 1-854-241-5573 | 2017-10-23 |
| Healthy Choices | 435ADE342265 | 2826 Mauris Rd.       | 1-369-765-1647 | 2018-02-10 |
| Health Mag      | 73F6095C6930 | 1080 Aliquet. St.     | 1-634-676-3716 | 2018-03-03 |
| Fruit Mania     | 5CC27CBC78BA | 311 In Avenue         | 2018-09-15 |
Membangun dan Mengoptimalkan Trigger di SQL Server

Menyimpan riwayat perubahan baris

Customers

| Customer        | ContractID   | Address               | PhoneNo        |
|-----------------|--------------|-----------------------|----------------|
| eFruits         | 691C37BC3CED | 1908 Fames Street     | 1-854-241-6000 |

CustomersHistory

| Customer        | ContractID   | Address               | PhoneNo        | ChangeDate |
|-----------------|--------------|-----------------------|----------------|------------|
| eFruits         | 691C37BC3CED | 1908 Fames Street     | 1-854-241-5573 | 2017-10-23 |
| eFruits         | 691C37BC3CED | 1908 Fames Street     | 1-854-241-6000 | 2019-05-12 |
Membangun dan Mengoptimalkan Trigger di SQL Server

Menyimpan riwayat perubahan baris

CREATE TRIGGER CopyCustomersToHistory
ON Customers

AFTER INSERT, UPDATE
AS INSERT INTO CustomersHistory (Customer, ContractID, Address, PhoneNo) SELECT Customer, ContractID, Address, PhoneNo, GETDATE() FROM inserted;
Membangun dan Mengoptimalkan Trigger di SQL Server

Audit tabel dengan trigger

CREATE TRIGGER OrdersAudit
ON Orders
AFTER INSERT, UPDATE, DELETE

AS DECLARE @Insert BIT = 0, @Delete BIT = 0;
IF EXISTS (SELECT * FROM inserted) SET @Insert = 1; IF EXISTS (SELECT * FROM deleted) SET @Delete = 1;
INSERT INTO [TablesAudit] ([TableName], [EventType], [UserAccount], [EventDate]) SELECT 'Orders' AS [TableName] ,CASE WHEN @Insert = 1 AND @Delete = 0 THEN 'INSERT' WHEN @Insert = 1 AND @Delete = 1 THEN 'UPDATE' WHEN @Insert = 0 AND @Delete = 1 THEN 'DELETE' END AS [Event] ,ORIGINAL_LOGIN() ,GETDATE();
Membangun dan Mengoptimalkan Trigger di SQL Server

Memberi notifikasi ke pengguna

CREATE TRIGGER NewOrderNotification
ON Orders
AFTER INSERT
AS
    EXECUTE SendNotification @RecipientEmail = '[email protected]'
                            ,@EmailSubject = 'New order placed'
                            ,@EmailBody = 'A new order was just placed.';
Membangun dan Mengoptimalkan Trigger di SQL Server

Ayo berlatih!

Membangun dan Mengoptimalkan Trigger di SQL Server

Preparing Video For Download...