如果 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)。当我尝试更新该列中的记录时,出现错误:
在预期条件的上下文中指定的非布尔类型的表达式,靠近 ')'。
有什么想法吗?谢谢