Я никогда не использовал транзакции SQL, и в моем случае я знаю, что мне действительно придется их использовать. Одной из функций моего приложения является преобразование файла Excel в базу данных.
Таким образом, я получаю значения из Excel, создаю массив строк с аргументами (для отправки в SP) и некоторые значения, которые я вставлю непосредственно в основную таблицу, а другие я вставлю во вторичные таблицы. , а затем я получу идентификаторы, которые будут вместо этих значений в основной таблице. Я говорю, что у меня есть внешние ключи, и поэтому я делаю это.
Так что я думаю, что делаю это отлично, но без транзакций. Но если что-то пойдет не так, когда я вставляю значения в таблицы, мне придется выполнить откат.
Итак, в процессе я использую 5 хранимых процедур, по одной для каждой таблицы. Эти SP не являются исключительными для этого процесса. Они будут использоваться в приложении для вставки записей.
Но мне нужна помощь в том, где использовать транзакцию. Должен ли я сделать это в C # (на стороне приложения) или в SQL Server (на стороне сервера)?
Пока я использую объект SqlTransaction из C #, и он работает каким-то образом, потому что, если я сделаю откат, он действительно отменяет все вставки, но идентификаторы, которые я использовал в транзакции, больше не доступны. Только если я отброшу все таблицы и создам их снова, эти идентификаторы снова будут доступны.
Так что я думаю, что я плохо использую транзакцию, и поэтому мне нужна помощь, чтобы знать, как и где лучше использовать транзакцию.