我正在尝试在表上创建Update触发器。目的是保持对该表所做更改的审计跟踪。 代码很长,所以我会在这里尝试简化它:
当tbl1的更新发生时:
@NewFirstName = FirstName
@NewLastName = LastName
从插入
@OldFistName = FirstName
@OldLastName = LastName
来自已删除
现在我想创建一个字符串,告诉用户这样的事情: ID1已从John更改为Michael
这是我的代码
if (@OldFistName <> @NewFirstName )
set @AuditString = @AuditString + ' NewFirstName from ' + cast(@OldFistName as varchar) + ' to ' + cast (@NewFirstName as varchar) + ','
我面临的问题是数据库中的许多字段都有NULLS。因此,例如,如果FistName为NULL,则代码将无法工作,因为它将NULL与某些内容进行比较,这会使我为空。
有什么方法吗?
我正在使用SQL Server 2008
答案 0 :(得分:0)
是的,有一个简单的解决方法。只需检查if
条件是否为变量。代码看起来像:
if @OOldFistName is null
-- Your code to handle this
else if @NewFirstName is null
-- Your code to handle this
else if (@OldFistName <> @NewFirstName )
set @AuditString = @AuditString + ' NewFirstName from '
+ cast(@OldFistName as varchar) + ' to '
+ cast (@NewFirstName as varchar) + ','
答案 1 :(得分:0)
刚刚弄清楚如何做到这一点,添加AND条件
if (@OldFistName is null AND @NewFirstName IS NOT NULL )
set @AuditString = @AuditString + ' FistName from ' + 'NULL ' + ' to ' + cast (@NewFirstName as varchar) + ','
ELSE
if (@OldFistName <> @NewFirstName )
set @AuditString = @AuditString + ' NewFirstName from ' + cast(@OldFistName as varchar) + ' to ' + cast (@NewFirstName as varchar) + ','