T_Referral テーブルで更新が発生した場合に監査テーブルを挿入するトリガーにスクリプトがあり、列の 1 つでデータを復号化するために Decrypt 関数を使用しています。トリガーの私のコードは次のとおりです。
DECLARE @Sql_Insert nvarchar(max)
SET @Sql_Insert = ''
SET @Sql_Insert='INSERT INTO [Logg].AuditLogData(TableName, ColumnName, OldValue, OldValue_Decode, NewValue, NewValue_Decode, AuditSubCategoryID,[GuID])
select TableName, ColumnName, OldValue_Decode, case when ColumnName = ''BookingUserReferenceValue'' then utl.sfDecrypt(NewValue,0) Else NewValue end, NewValue_Decode, AuditSubCategoryID,[GuID] from #AuditLogData
where ISNULL(OldValue,'') != ISNULL([NewValue],'')'
exec utl.uspOpenOrCloseEncryptionKey 'open'
exec(@Sql_Insert )
exec utl.uspOpenOrCloseEncryptionKey 'close'
私の更新スクリプトは
Update RTS.T_Referral
set BookingUserReferenceValue = cast ('John Wayne' as varbinary(256))
where ReferralId = 20
John Wayne
テーブルの varbinary としてレコードを更新していT_Referral
ます (レコードは のように見えます0x4A6F686E205761796E65
)。更新トリガーが呼び出されると、そのレコードが監査テーブルに John Wayne としてロードされます。レコードが BookingUserReferenceValue に挿入されると、暗号化されます。列 BookingUserReferenceValue のデータ型は Varbinary(256) です。その列のレコードを更新しようとすると、エラーが発生します:
')' の近くで、条件が予想されるコンテキストで指定された非ブール型の式。
何が問題なのですか?ありがとう