在T-SQL触发器中评估更新函数内的动态列名称

时间:2018-06-15 18:53:23

标签: sql sql-server tsql triggers database-trigger

我正在尝试确定是否可以在T-SQL触发器的更新函数中使用动态列名。

在我的表中,我有一个列,“Last_Name”。触发器内部我能够评估

update(Last_Name)

但我无法评估

DECLARE @colName VARCHAR(25)
SET @colName = 'Last_Name'
update(@colName)

有没有办法让SQL Server识别此触发器中更新函数的动态列名?

更新

在触发器定义中,我尝试了

DECLARE @dynamicSQL NVARCHAR(MAX)
SET @dynamicSQL = 'IF(update(' + @colName + ')) 
BEGIN
    PRINT ''okay-' + @colName + '''   
END'

exec(@dynamicSQL);

但收到以下错误:

  

只能在CREATE TRIGGER语句中使用IF UPDATE。

看起来“exec”语句正在评估触发器本身之外的动态SQL。

0 个答案:

没有答案