DB触发器获胜';t在SqlBulkCopy写入服务器新行后执行
本文关键字:服务器 新行 执行 SqlBulkCopy 获胜 触发器 DB | 更新日期: 2024-10-21 01:54:43
插入新行后,我正在尝试更新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...
}