如果在T_Referral表上发生任何更新,并且我正在使用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)。当我尝试更新该列中的记录,我得到错误:
在指定的上下文非布尔类型,其中一个 状况的预期,附近“)”的一种表现。
任何想法什么是错的? 感谢
utl.sfDecrypt(NewValue,0)和NewValue的数据类型是否相同? – GilM