表插入触发器并使用以下代码SqlBulkCopySqlBc1=newSqlBulkCopy(strConnString,SqlBulkCopyOptions.FireTriggers);//为SqlBulkCopy设置DataReadersqlComm=newSqlCommand(strQuery,sqlTemCon);sqlComm.CommandTimeout=3600000;sqlComm.CommandType=系统.Data.CommandType.Text;SqlDataReaderdReader=sqlComm.ExecuteReader();SqlBc1.WriteToServer(dReader);但在执行之前和之后。它只会为50k插入触发第一行触发器,我想它应该为每一行触发。我怎样才能做到这一点??触发器从不每行触发。它们针对相应DML语句的所有行触发。重写您的触发器,使其可以处理包含许多行的INSERTED表。无论如何,这是最佳实践和必要的练习。它只在从50k行插入的第一行触发触发器您一定误解了这种情况,可能是因为您不知道触发器可以在虚拟表中包含多行。默认情况下,SqlBulkCopy对象的批处理大小是完整的行集。以下是MSDN对BatchSize属性值的描述:“零(默认值)表示每个WriteToServer操作都是一个批处理。”在这种情况下,触发器将触发一次,但Inserted表将包含所有受影响的记录条目。我试过了,它会起作用的。我希望它能帮助你..CREATETRIGGERTriggernameONTableNameAfterINSERTASSETNOCOUNTON;INSERTTOTargetTable(field)SELECT(i.field1,i.field2,i.field3,....,i.fieldn)FROMinsertediGO以上是C#学习教程:使用SqlBulkCopy对每个inserted触发一个trigger排。分享的所有内容,如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络收藏,不代表立场,如涉及侵权,请谅解点击右侧联系管理员删除。如需转载请注明出处:
