اگه هدف شما اينه كه هر 20 ركورد باهم درج بشه يا هيچ كدوم درج نشه، بايد از Transaction استفاده كنيد. كوئري هاي Insert به هم الحاق كنيد. اگه وسط كار برق بره يا هر خطايي رخ بده درج انجام نميشه.
براي نوع فيلد هم int تا 2 ميليارد عدد مثبت ميتونه و اگه كافي نيست از bigint استفاده كنيد
يك مثال از تراكنش:
string complexCommand = string.Concat(
"DECLARE @first_table AS TABLE(col1 int IDENTITY, col_x varchar(20), col_y varchar(20))"
, " DECLARE @second_table AS TABLE(col2 int IDENTITY, col_z varchar(20), col_a varchar(20))"
, " DECLARE @third_table AS TABLE(col3 int IDENTITY, col_b varchar(20), col_c varchar(20))"
, " DECLARE @my_table AS TABLE(col1 int, col2 int, col3 int, col_v varchar(20))"
, " DECLARE @col1 int"
, " DECLARE @col2 int"
, " DECLARE @col3 int"
, " BEGIN TRAN"
, " BEGIN TRY"
, " insert into @first_table (col_x, col_y) values ('col_x', 'col_y')"
, " SET @col1=@@IDENTITY"
, " insert into @second_table (col_z, col_a) values ('col_z', 'col_a')"
, " SET @col2=@@IDENTITY"
, " insert into @third_table (col_b, col_c) values ('col_b', 'col_c')"
, " SET @col3=@@IDENTITY"
, " insert into @my_table(col1, col2, col3, col_v) values (@col1, @col2, @col3, 'col_v')"
, " COMMIT"
, " END TRY"
, " BEGIN CATCH"
, " ROLLBACK"
, " END CATCH");