Il trigger DB non verrà eseguito dopo che SqlBulkCopy scrive su server nuove righe

c# sql sqlbulkcopy sql-server

Domanda

Sto cercando di aggiornare la colonna ssn dopo che è stata inserita una nuova riga. Specifica che ho bisogno di impostare null per la colonna ssn e impostare quel valore di crittografia su un'altra colonna. C'è qualche errore o cosa c'è di sbagliato nel mio grilletto?

ALTER TRIGGER [dbo].[MemberInsert]
ON [dbo].[Member]
AFTER INSERT
AS 
BEGIN   
SET NOCOUNT ON;

OPEN SYMMETRIC KEY SSN_Key
    DECRYPTION BY CERTIFICATE MyCer;

UPDATE Member
SET  [EncryptedSSN] = EncryptByKey(Key_GUID('SSN_Key'), inserted.SSN)
FROM inserted
INNER JOIN dbo.Member On inserted.MemberId = Member.MemberId

UPDATE Member
SET [SSN] = null 
FROM inserted
INNER JOIN dbo.Member On inserted.MemberId = Member.MemberId
END

In questo momento niente è successo con le righe aggiunte. Inoltre devo aggiungere che inserisco nuove righe usando SqlBulkCopy . È un problema per il grilletto prendere l'evento in questo modo?

Risposta accettata

SqlBulkCopy non controlla il trigger per impostazione predefinita, è necessario specificare le opzioni: SqlBulkCopyOptions

var options = SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints;
using (var bulkCopy = new SqlBulkCopy(connection, options, transaction))
{
    // ...Code...
}


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