Tentukan Pemicu Pertama dan Terakhir
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Anda dapat menentukan bahwa salah satu pemicu AFTER yang terkait dengan tabel adalah pemicu AFTER pertama atau pemicu AFTER terakhir yang diaktifkan untuk setiap tindakan pemicu INSERT, DELETE, dan UPDATE. Pemicu AFTER yang diaktifkan antara pemicu pertama dan terakhir dijalankan dalam urutan yang tidak ditentukan.
Untuk menentukan urutan pemicu AFTER, gunakan prosedur tersimpan sp_settriggerorder . sp_settriggerorder memiliki opsi berikut.
Opsi | Deskripsi |
---|---|
Pertama | Menentukan bahwa pemicu DML adalah pemicu AFTER pertama yang diaktifkan untuk tindakan pemicu. |
Terakhir | Menentukan bahwa pemicu DML adalah pemicu AFTER terakhir yang diaktifkan untuk tindakan pemicu. |
Tidak | Menentukan bahwa tidak ada urutan khusus di mana pemicu DML harus diaktifkan. Digunakan terutama untuk mengatur ulang pemicu agar tidak menjadi yang pertama atau terakhir. |
Contoh berikut menunjukkan penggunaan sp_settriggerorder:
sp_settriggerorder @triggername = 'MyTrigger', @order = 'first', @stmttype = 'UPDATE'
Penting
Pemicu pertama dan terakhir harus dua pemicu DML yang berbeda.
Tabel dapat memiliki pemicu INSERT, UPDATE, dan DELETE yang ditentukan di dalamnya secara bersamaan. Setiap jenis pernyataan dapat memiliki pemicu pertama dan terakhirnya sendiri, tetapi tidak dapat menjadi pemicu yang sama.
Jika pemicu pertama atau terakhir yang ditentukan untuk tabel tidak mencakup tindakan pemicu, seperti tidak mencakup FOR UPDATE, FOR DELETE, atau FOR INSERT, tidak ada pemicu pertama atau terakhir untuk tindakan yang hilang.
ALIH-ALIH pemicu tidak dapat ditentukan sebagai pemicu pertama atau terakhir. ALIH-ALIH pemicu diaktifkan sebelum pembaruan dilakukan pada tabel yang mendasar. Jika pembaruan dibuat oleh pemicu ALIH-ALIH ke tabel yang mendasar, pembaruan terjadi sebelum pemicu AFTER yang ditentukan pada tabel diaktifkan. Misalnya, jika pemicu ALIH-ALIH INSERT pada tampilan menyisipkan data ke dalam tabel dasar dan tabel dasar itu sendiri berisi pemicu ALIH-ALIH INSERT dan tiga pemicu AFTER INSERT, pemicu ALIH-ALIH INSERT pada tabel dasar diaktifkan alih-alih tindakan penyisipan, dan pemicu AFTER pada tabel dasar diaktifkan setelah tindakan penyisipan pada tabel dasar. Untuk informasi selengkapnya, lihat Pemicu DML.
Jika pernyataan ALTER TRIGGER mengubah pemicu pertama atau terakhir, atribut Pertama atau Terakhir dihilangkan dan nilai pesanan diatur ke Tidak Ada. Urutan harus diatur ulang dengan menggunakan sp_settriggerorder.
Fungsi OBJECTPROPERTY melaporkan apakah pemicu adalah pemicu pertama atau terakhir dengan menggunakan properti pengikut: ExecIsFirstInsertTrigger, ExecIsFirstUpdateTrigger, ExecIsFirstDeleteTrigger, ExecIsLastInsertTrigger, ExecIsLastUpdateTrigger, dan ExecIsLastDeleteTrigger.
Replikasi secara otomatis menghasilkan pemicu pertama untuk tabel apa pun yang disertakan dalam langganan pembaruan segera atau pembaruan antrean. Replikasi mengharuskan pemicunya menjadi pemicu pertama. Replikasi menimbulkan kesalahan saat Anda mencoba menyertakan tabel dengan pemicu pertama dalam langganan pembaruan segera atau pembaruan antrean. Jika Anda mencoba membuat pemicu pemicu pertama setelah tabel disertakan dalam langganan, sp_settriggerorder mengembalikan kesalahan. Jika Anda menggunakan ALTER pada pemicu replikasi atau menggunakan sp_settriggerorder untuk mengubah pemicu replikasi menjadi pemicu terakhir atau tidak ada, langganan tidak akan berfungsi dengan benar.