我正在使用触发器来审核表更改。现在我捕获以下各列的更改:
DECLARE @statement VARCHAR(MAX)
SELECT @statement =
'Col1: ' + CAST(ISNULL(Col1, '') AS VARCHAR) + ', Col2: ' + CAST(ISNULL(Col2, '') AS VARCHAR) + ', Col3: ' + CAST(ISNULL(Col3, '') AS VARCHAR)
FROM INSERTED;
问题是,我需要调整我想要审核的每个表/触发器的列名。有没有办法构建@statement,使用更通用的方法独立于表?
欢呼声 大卫
答案 0 :(得分:1)
你需要做的是使用以下查询构建一个内存表,然后循环遍历它以生成你想要的SQL语句
从information_schema.columns中选择column_name table_name就像'tName' 按ordinal_position排序
然而,我不确定这对于AUDIT来说是否正确。你以后怎么回去。在你的一个版本中说你碰巧放下了会发生什么呢?你怎么知道哪个列保存了哪些数据。