Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Artikel ini menjelaskan cara membuat pemicu Transact-SQL Data Manipulation Language (DML) dengan SQL Server Management Studio, atau pernyataan Transact-SQL CREATE TRIGGER .
Sampel kode dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.
Keterbatasan
Untuk daftar batasan dan pembatasan yang terkait dengan pembuatan pemicu DML, lihat CREATE TRIGGER.
Izin
ALTER Memerlukan izin pada tabel atau tampilan tempat pemicu sedang dibuat.
Cara membuat pemicu DML
Anda dapat menggunakan salah satu metode berikut:
Menggunakan SQL Server Management Studio
Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.
Perluas Database, perluas
AdventureWorks2025database, perluas Tabel, lalu perluas tabelPurchasing.PurchaseOrderHeader.Klik kanan Pemicu, lalu pilih Pemicu Baru.
Pada menu Kueri, pilih Tentukan Nilai untuk Parameter Template. Atau, Anda dapat menekan (Ctrl-Shift-M) untuk membuka kotak dialog Tentukan Nilai untuk Parameter Templat.
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 PurchasingTrigger_Name NewPODetail2Table_Name PurchaseOrderDetailData_Modification_Statement Hapus UPDATEdanDELETEdari daftar.Pilih OK.
Di Editor Kueri, ganti komentar
-- Insert statements for trigger heredengan 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;Untuk memverifikasi sintaks valid, pada menu Kueri , pilih Uraikan. Jika pesan kesalahan dikembalikan, bandingkan pernyataan dengan blok kode sebelumnya, koreksi sesuai kebutuhan, dan ulangi langkah ini.
Untuk membuat pemicu DML, dari menu Kueri , pilih Jalankan. Pemicu DML dibuat sebagai objek dalam database.
Untuk melihat pemicu DML yang tercantum di Object Explorer, klik kanan Pemicu dan pilih Refresh.
Menggunakan Transact-SQL
Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.
Dari menu File , pilih Kueri Baru.
Salin dan tempel contoh berikut ke dalam jendela kueri dan pilih Jalankan. Contoh ini membuat pemicu DML tersimpan yang sama seperti sebelumnya. Pemicu ini berlaku untuk penyisipan baris multirow dan tunggal, dan optimal untuk sisipan baris tunggal.
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;