BeginTransaction tidak berarti bahwa "transaksi Anda telah dimulai dan semuanya terkunci". Itu hanya memberi tahu RDBMS tentang niat Anda untuk memulai transaksi dan bahwa segala sesuatu yang harus Anda lakukan mulai sekarang harus dan harus dianggap atomik.
Ini berarti Anda dapat memanggil BeingTransaction dan saya dapat menghapus semua data dari semua tabel di database Anda dan RDBMS akan dengan senang hati mengizinkan saya melakukannya. Mudah-mudahan, itu tidak akan membiarkan saya menjatuhkan DB karena Anda memiliki koneksi terbuka untuk itu, namun, Anda tidak pernah tahu hari ini. Mungkin ada beberapa fitur tidak berdokumen yang tidak saya ketahui.
Atomic berarti setiap tindakan atau serangkaian tindakan harus dilakukan sebagai satu kesatuan. Jika salah satu dari mereka gagal maka semuanya gagal. Ini adalah konsep segalanya atau tidak sama sekali.
Sepertinya Anda memasukkan tiga baris ke dalam tabel. Jika tabel Anda kosong atau memiliki jumlah baris yang sangat sedikit, tabel mungkin akan mengunci seluruh tabel tergantung pada aturan LOCK ESCALATION dari RDBMS Anda. Namun, jika tabel besar atau sangat besar atau dipartisi maka aturan eskalasi LOCK mungkin tidak menjamin kunci tabel. Jadi, beberapa transaksi mungkin masih dapat menyisipkan baris ke tabel Anda secara bersamaan. Itu semua tergantung pada bagaimana RDBMS menangani situasi ini dan bagaimana model data Anda terstruktur.
Sekarang untuk menjawab pertanyaan Anda:
PETUNJUK - Cari cara untuk mengunci seluruh tabel sebelum Anda mulai memasukkan data.
Namun, ini biasanya tidak baik, tetapi saya berasumsi bahwa Anda memiliki alasan yang masuk akal untuk melakukannya.
Semoga membantu.