2009-09-28 38 views
4

如果爲SqlBulkCopy插入設置了SqlBulkCopyOptions.CheckConstraints選項,它會在每個記錄之後單獨檢查約束,還是在插入所有記錄後檢查約束?SqlBulkCopy檢查約束在哪個階段?

我有一個檢查約束,比較某些列與父行(通過UDF)。我正在使用MS Sql Server 2005.在http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopyoptions.aspx上的文檔只說「在數據插入時檢查約束」。

在我的測試中,似乎直到結束時才檢查外鍵,但在添加下一行之前,檢查每行的檢查約束。這聽起來很奇怪。我還沒有找到關於此的任何文檔。

+0

UDF將爲每一行運行,並暗戀性能! – 2009-09-28 15:46:37

+0

我會使用SQL事件探查器來確定答案。也許FK在開始時被禁用,並在最後被應用。 – 2009-11-20 19:12:09

回答

0

不確定,如果我完全理解這一點。

但是,那可能是因爲交易到位。它可能檢查外鍵約束,當它準備提交時,作爲列約束可以獨立檢查(有點)。