Ini untuk SQL Server.
Setiap pernyataan bersifat atomik, tetapi jika Anda ingin prosedur tersimpan menjadi atomik (atau urutan pernyataan apa pun secara umum), Anda perlu secara eksplisit mengapit pernyataan dengan
MULAI TRANSAKSI
Pernyataan ...
Pernyataan ...
KOMITKAN TRANSAKSI
(Umumnya menggunakan BEGIN TRAN dan END TRAN.)
Tentu saja ada banyak cara untuk mendapatkan masalah kunci tergantung apa lagi yang terjadi pada saat yang sama, jadi Anda mungkin memerlukan strategi untuk menangani transaksi yang gagal. (Diskusi lengkap tentang semua keadaan yang mungkin mengakibatkan kunci, tidak peduli bagaimana Anda merancang SP khusus ini, berada di luar cakupan pertanyaan.) Tetapi mereka masih dapat dikirim ulang karena atomnya. Dan menurut pengalaman saya, Anda mungkin akan baik-baik saja, tanpa mengetahui tentang volume transaksi Anda dan aktivitas lain di database. Maaf untuk menyatakan yang sudah jelas.
Berlawanan dengan kesalahpahaman populer, ini akan bekerja dalam kasus Anda dengan pengaturan tingkat transaksi default.