Déclenchement automatique pour chaque ligne insérée à l'aide de SqlBulkCopy

c# sqlbulkcopy sql-server triggers winforms

Question

SqlBulkCopy classe SqlBulkCopy pour insérer 50k lignes à la fois dans la table tbl_records J'ai défini un déclencheur After Insert sur cette table et à l'aide du code suivant

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);

Mais après l'exécution de prog. Il déclenche la First rangée sur 50k insérée

Je veux qu'il soit déclenché à chaque rangée. Comment puis-je faire ceci??

Réponse populaire

Les déclencheurs ne tirent jamais par rangée. Ils se déclenchent pour toutes les lignes de l'instruction DML correspondante. Réécrivez votre déclencheur afin qu'il puisse gérer la table INSERTED contenant plusieurs lignes. C’est de toute façon la meilleure pratique et la pratique requise.

il déclenche uniquement la première ligne insérée sur 50 000 lignes

Vous devez mal interpréter la situation, peut-être parce que vous ne saviez pas que les déclencheurs peuvent contenir plusieurs lignes dans les tables virtuelles.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi