BeginTransaction не означава, че "транзакцията ви е започнала и всичко е заключено". Той просто информира RDBMS относно вашето намерение да инициирате транзакция и че всичко, което трябва да направите оттук нататък, трябва и трябва да се счита за атомарно.
Това означава, че можете да извикате BeingTransaction и аз мога да изтрия всички данни от всички таблици във вашата база данни и RDBMS с радост ще ми позволи да направя това. Надяваме се, че не би трябвало да ми позволи да изпусна базата данни, защото имате отворена връзка с нея, но никога не се знае в наши дни. Възможно е да има някои недокументирани функции, за които не знам.
Атомно означава, че всяко действие или набор от действия трябва да се изпълнява като едно. Ако някой от тях се провали, всички се провалят. Това е концепция за всичко или нищо.
Изглежда, че вмъквате три реда в таблица. Ако вашата таблица е празна или има много малък брой редове, тя може да заключи цялата таблица в зависимост от правилата за ЗАКЛЮЧВАНЕ НА ЕСКАЛАЦИЯ на вашата RDBMS. Въпреки това, ако това е голяма или много голяма или разделена таблица, тогава правилата за ескалация LOCK може да не гарантират заключване на таблица. Така че все още може да е възможно множество транзакции да вмъкват редове във вашата таблица едновременно. Всичко зависи от това как RDBMS се справя с тази ситуация и как е структуриран вашият модел на данни.
Сега да отговоря на въпроса ви:
СЪВЕТ – Потърсете начин да заключите цялата таблица, преди да започнете да вмъквате данни.
Това обаче обикновено не е добре, но предполагам, че имате разумна причина да го направите.
Надявам се това да помогне.