首页 > 解决方案 > 在 T-SQL 触发器中评估更新函数内的动态列名

问题描述

我正在尝试确定是否可以在 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。

标签: sqlsql-servertsqltriggersdatabase-trigger

解决方案


推荐阅读