SQL - 连接任何表中的所有列

时间:2012-05-28 15:32:29

标签: sql sql-server sql-server-2008 auditing

我正在使用触发器来审核表更改。现在我捕获以下各列的更改:

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,使用更通用的方法独立于表?

欢呼声 大卫

1 个答案:

答案 0 :(得分:1)

你需要做的是使用以下查询构建一个内存表,然后循环遍历它以生成你想要的SQL语句

从information_schema.columns中选择column_name  table_name就像'tName' 按ordinal_position排序

然而,我不确定这对于AUDIT来说是否正确。你以后怎么回去。在你的一个版本中说你碰巧放下了会发生什么呢?你怎么知道哪个列保存了哪些数据。