Я использую класс SqlBulkCopy
для вставки 50 тыс. SqlBulkCopy
за раз в таблице tbl_records
Я установил триггер After Insert
в этой таблице и используя следующий код
SqlBulkCopy SqlBc1 = new SqlBulkCopy(strConnString, SqlBulkCopyOptions.FireTriggers);
// Set DataReader For SqlBulkCopy
sqlComm = new SqlCommand(strQuery, sqlTemCon);
sqlComm.CommandTimeout = 3600000;
sqlComm.CommandType = System.Data.CommandType.Text;
SqlDataReader dReader = sqlComm.ExecuteReader();
SqlBc1.WriteToServer(dReader);
Но после выполнения прог. Это триггер запуска только для First
строки из 50k
Я хочу, чтобы он стрелял по каждому ряду. Как я могу это сделать??
Триггеры никогда не стреляют в ряд. Они запускаются для всех строк соответствующего оператора DML. Перепишите триггер, чтобы он мог справиться с таблицей INSERTED
содержащей много строк. В любом случае, это лучшая практика и необходимая практика.
он запускает триггер только для первой строки, вставленной из 50k строк
Вы должны неправильно интерпретировать ситуацию, возможно, потому, что не знали, что триггеры могут содержать несколько строк в виртуальных таблицах.