Itu mungkin, tetapi di dunia nyata sedikit lebih rumit daripada pendekatan naif yang Anda bayangkan. Terutama, tidak dapat diterima jika pemicu menunggu permintaan HTTP:
- Untuk satu, aplikasi Anda akan merangkak berhenti, karena pemicu akan memblokir sumber daya (terutama kunci) menunggu respons dari beberapa layanan WWW yang jauh dan jauh.
- Kedua, lebih halus tetapi jauh lebih buruk, adalah masalah kebenaran dengan adanya rollback. Jika transaksi yang dikeluarkan untuk permintaan HTTP dibatalkan, tidak ada cara untuk 'mengurungkan' permintaan HTTP.
Solusinya adalah memisahkan pemicu dari permintaan HTTP melalui antrian. Pemicu mengantrekan permintaan ke dalam antrean lokal dan melakukan, sementara bagian pemrosesan yang terpisah menghapus permintaan ini dan mengeluarkan permintaan HTTP. Ini memecahkan kedua masalah yang disebutkan di atas. Anda dapat menggunakan tabel biasa untuk antrian (lihat Menggunakan Tabel sebagai Antrian) atau Anda dapat menggunakan Pialang Layanan, keduanya berfungsi dengan baik.
Sekarang tentang cara dequeue permintaan ini dan benar-benar menempatkan panggilan HTTP, saya sangat menyarankan menggunakan proses khusus (yaitu aplikasi yang didedikasikan untuk tujuan ini). Meskipun dimungkinkan untuk menggunakan SQLCLR, ini adalah pilihan yang sangat buruk. Sumber daya SQL Server (khususnya pekerja) terlalu berharga untuk disia-siakan untuk menunggu tanggapan Internet.