DBトリガーは、SqlBulkCopyがサーバーの新しい行に書き込んだ後には実行されません

c# sql sqlbulkcopy sql-server

質問

私は新しい行が挿入された後に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ます。このようにトリガーがイベントをキャッチするのは問題ですか?

受け入れられた回答

SqlBulkCopyは既定でトリガーをチェックしません。オプションを指定する必要があります。SqlBulkCopyOptions

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


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ