Membuat Pemicu DML

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Topik ini menjelaskan cara membuat pemicu DML Transact-SQL dengan menggunakan SQL Server Management Studio dan dengan menggunakan pernyataan TRANSACT-SQL CREATE TRIGGER.

Sebelum Anda mulai

Batasan dan Pembatasan

Untuk daftar batasan dan batasan yang terkait dengan pembuatan pemicu DML, lihat CREATE TRIGGER (Transact-SQL).

Izin

Memerlukan izin UBAH pada tabel atau tampilan tempat pemicu sedang dibuat.

Cara Membuat Pemicu DML

Anda bisa menggunakan salah satu hal berikut ini:

Menggunakan SQL Server Management Studio

  1. Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.

  2. Perluas Database, perluas AdventureWorks2022 database, perluas Tabel lalu perluas tabel Purchasing.PurchaseOrderHeader.

  3. Klik kanan Pemicu, lalu pilih Pemicu Baru.

  4. Pada menu Kueri , klik Tentukan Nilai untuk Parameter Templat. Atau, Anda dapat menekan (Ctrl-Shift-M) untuk membuka kotak dialog Tentukan Nilai untuk Parameter Templat.

  5. Dalam kotak dialog Tentukan Nilai untuk Parameter Templat, masukkan nilai berikut untuk parameter yang diperlihatkan.

    Parameter Nilai
    Penulis Namamu
    Buat Tanggal Tanggal hari ini
    Deskripsi Memeriksa peringkat kredit vendor sebelum mengizinkan pesanan pembelian baru dengan vendor dimasukkan.
    Schema_Name Pembelian
    Trigger_Name NewPODetail2
    Table_Name PurchaseOrderDetail
    Data_Modification_Statement Hapus UPDATE dan DELETE dari daftar.
  6. Klik OK.

  7. Di Editor Kueri, ganti komentar -- Insert statements for trigger here dengan pernyataan berikut:

    IF @@ROWCOUNT = 1  
    BEGIN  
       UPDATE Purchasing.PurchaseOrderHeader  
       SET SubTotal = SubTotal + LineTotal  
       FROM inserted  
       WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID  
    
    END  
    ELSE  
    BEGIN  
          UPDATE Purchasing.PurchaseOrderHeader  
       SET SubTotal = SubTotal +   
          (SELECT SUM(LineTotal)  
          FROM inserted  
          WHERE PurchaseOrderHeader.PurchaseOrderID  
           = inserted.PurchaseOrderID)  
       WHERE PurchaseOrderHeader.PurchaseOrderID IN  
          (SELECT PurchaseOrderID FROM inserted)  
    END;  
    
  8. Untuk memverifikasi sintaks valid, pada menu Kueri, klik Urai. Jika pesan kesalahan dikembalikan, bandingkan pernyataan dengan informasi di atas dan benar sesuai kebutuhan dan ulangi langkah ini.

  9. Untuk membuat pemicu DML, dari menu Kueri , klik Jalankan. Pemicu DML dibuat sebagai objek dalam database.

  10. Untuk melihat pemicu DML yang tercantum di Object Explorer, klik kanan Pemicu dan pilih Refresh.

Sebelum Anda Mulai

Menggunakan T-SQL

  1. Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.

  2. Dari menu File , klik Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan klik Jalankan. Contoh ini membuat pemicu DML tersimpan yang sama seperti di atas.

    -- Trigger valid for multirow and single row inserts  
    -- and optimal for single row inserts.  
    USE AdventureWorks2022;  
    GO  
    CREATE TRIGGER NewPODetail3  
    ON Purchasing.PurchaseOrderDetail  
    FOR INSERT AS  
    IF @@ROWCOUNT = 1  
    BEGIN  
       UPDATE Purchasing.PurchaseOrderHeader  
       SET SubTotal = SubTotal + LineTotal  
       FROM inserted  
       WHERE PurchaseOrderHeader.PurchaseOrderID = inserted.PurchaseOrderID  
    
    END  
    ELSE  
    BEGIN  
          UPDATE Purchasing.PurchaseOrderHeader  
       SET SubTotal = SubTotal +   
          (SELECT SUM(LineTotal)  
          FROM inserted  
          WHERE PurchaseOrderHeader.PurchaseOrderID  
           = inserted.PurchaseOrderID)  
       WHERE PurchaseOrderHeader.PurchaseOrderID IN  
          (SELECT PurchaseOrderID FROM inserted)  
    END;