In quale fase SqlBulkCopy controlla i vincoli?

constraints sqlbulkcopy sql-server-2005

Domanda

Se l'opzione SqlBulkCopyOptions.CheckConstraints è impostata per l'inserimento SqlBulkCopy, verifica i vincoli separatamente dopo ogni record o dopo che tutti i record sono stati inseriti?

Ho un vincolo di controllo che confronta alcune colonne con la riga genitore (attraverso una UDF). Sto usando MS Sql Server 2005. La documentazione su http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopyoptions.aspx dice solo "Controlla i vincoli mentre i dati vengono inseriti."

Nei miei test sembra che le chiavi esterne non siano controllate fino alla fine, ma i vincoli di controllo sono controllati per ogni riga prima di aggiungere quella successiva. Sembra abbastanza strano. Non ho trovato alcuna documentazione su questo.

Risposta popolare

Non sono sicuro, se capisco questo completamente.

Ma questo potrebbe essere dovuto alla transazione in atto. Potrebbe verificare i vincoli delle chiavi esterne, quando è pronto per il commit, rispetto ai vincoli di colonna che possono essere controllati indipendentemente (in qualche modo).



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow