DML tetikleyicileri nasıl kullanılır

SQL Server'da Tetikleyiciler Oluşturma ve Optimize Etme

Florin Angelescu

Instructor

Neden DML tetikleyicileri kullanmalıyız?

  • Veriyi işlerken eylem başlatma
  • Veri işlemesini engelleme
  • Veri veya nesne değişikliklerini izleme
  • Kullanıcı denetimi ve veritabanı güvenliği
SQL Server'da Tetikleyiciler Oluşturma ve Optimize Etme

AFTER ve INSTEAD OF arasında karar verme

CREATE TRIGGER MyFirstAfterTrigger
ON Table1
-- Tetikleyen olaydan sonra 
-- (UPDATE) çalışır
AFTER UPDATE
AS
{trigger_actions_section};
CREATE TRIGGER MyFirstInsteadOfTrigger
ON Table2
-- Tetikleyen olayın yerine 
-- (UPDATE) çalışır
INSTEAD OF UPDATE
AS
{trigger_actions_section};
SQL Server'da Tetikleyiciler Oluşturma ve Optimize Etme

AFTER ve INSTEAD OF arasında karar verme

AFTER tetikleyici

İlk olay tetikleyiciyi başlatır

İlk olay yürütülür

Tetikleyici eylemleri yürütülür

AFTER tetikleyici nasıl çalışır

INSTEAD OF tetikleyici

İlk olay tetikleyiciyi başlatır

İlk olay artık yürütülmez

Tetikleyici eylemleri yürütülür

INSTEAD OF tetikleyici nasıl çalışır

SQL Server'da Tetikleyiciler Oluşturma ve Optimize Etme

AFTER tetikleyici kullanım örneği

  • Satış tablosuna veri eklenir
  • Veri temizleme yordamını başlatın
  • Yordam sonuçlarıyla rapor üretin
  • Veritabanı yöneticisine bildirin
CREATE TRIGGER SalesNewInfoTrigger
ON Sales
AFTER INSERT
AS

EXEC sp_cleansing @Table = 'Sales';
EXEC sp_generateSalesReport;
EXEC sp_sendnotification;
SQL Server'da Tetikleyiciler Oluşturma ve Optimize Etme

INSTEAD OF tetikleyici kullanım örneği

| Marka | Model    | Güç | Stok |
|-------|----------|-----|------|
| Ecco  | Standard | 30W | 30   |
| Miry  | Buma     | 45W | 0    |
| Lume  | Ultra    | 50W | 0    |
  • Bazı modellerin gücü değişir
CREATE TRIGGER BulbsStockTrigger
ON Bulbs
INSTEAD OF INSERT
AS
SQL Server'da Tetikleyiciler Oluşturma ve Optimize Etme

INSTEAD OF tetikleyici kullanım örneği

| Marka | Model    | Güç | Stok |
|-------|----------|-----|------|
| Ecco  | Standard | 30W | 30   |
| Miry  | Buma     | 50W | 100  |
| Lume  | Ultra    | 52W | 100  |
  • Bazı modellerin gücü değişir
  • Yalnızca stoğu olmayan ürünleri güncelleyin
CREATE TRIGGER BulbsStockTrigger
ON Bulbs
INSTEAD OF INSERT
AS

IF EXISTS (SELECT * FROM Bulbs AS b INNER JOIN inserted AS i ON b.Brand = i.Brand AND b.Model = i.Model WHERE b.Stock = 0) BEGIN UPDATE b SET b.Power = i.Power, b.Stock = i.Stock FROM Bulbs AS b INNER JOIN inserted AS i ON b.Brand = i.Brand AND b.Model = i.Model WHERE b.Stock = 0 END
SQL Server'da Tetikleyiciler Oluşturma ve Optimize Etme

INSTEAD OF tetikleyici kullanım örneği

| Marka | Model    | Güç | Stok |
|-------|----------|-----|------|
| Ecco  | Standard | 30W | 30   |
| Miry  | Buma     | 50W | 100  |
| Lume  | Ultra    | 52W | 100  |
| Ecco  | Standard | 35W | 100  |
  • Bazı modellerin gücü değişir
  • Yalnızca stoğu olmayan ürünleri güncelleyin
  • Stoğu olan ürünler için yeni satırlar ekleyin
-- Alan kısıtı nedeniyle ilk bölüm kısaltıldı
IF EXISTS (SELECT * FROM Bulbs AS b
INNER JOIN inserted AS i
           ON b.Brand = i.Brand
          AND b.Model = i.Model
WHERE b.Stock = 0)
BEGIN
    UPDATE b
    SET b.Power = i.Power,
        b.Stock = i.Stock
    FROM Bulbs AS b
    INNER JOIN inserted AS i
                ON b.Brand = i.Brand
                  AND b.Model = i.Model
    WHERE b.Stock = 0
END
ELSE
    INSERT INTO Bulbs
    SELECT * FROM inserted;
SQL Server'da Tetikleyiciler Oluşturma ve Optimize Etme

Alıştırma soruları

SQL Server'da Tetikleyiciler Oluşturma ve Optimize Etme

Preparing Video For Download...