sql - 在 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。
解决方案
推荐阅读
- javascript - 无法将侦听器添加到由另一个按钮创建的按钮
- swift - 如何快速将下载文件转发到我的应用程序?
- sql - 使用 SELECT 查询检查具有单个值的多个列
- c# - 如何打印具有属性的对象列表?
- c# - 如何在 C# 中使用 IText7 在现有 pdf 的顶部添加条形码?
- oracle - ORA-01873: 使用 EXTRACT 函数时区间的前导精度太小
- c++ - 数组值意外更改
- google-apps-script - 有没有办法在保留文本格式的同时替换 TextBox 形状内的文本?
- django-models - django 模型中使用的变量是类变量还是实例变量?
- scala - 将 Json 从蛇案例解析为骆驼案例