SqlBulkCopy 写入服务器新行后,数据库触发器不会执行

DB trigger won't execute after SqlBulkCopy write to server new rows

我正在尝试在插入新行后更新 ssn 列。指定我需要将 null 设置为 ssn 列并将该加密值设置为另一列。有没有错误或者我的触发器有什么问题?

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

现在添加的行没有任何反应。我还必须添加我使用 SqlBulkCopy 插入新行。触发器这样捕获事件有问题吗?

SqlBulkCopy 默认不检查触发器,您必须指定选项:SqlBulkCopyOptions

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