连接动态SQL Server中的字段

时间:2017-05-17 07:31:32

标签: sql-server sql-server-2008

我有一个应用程序填充表,它安静了几列。我正在设置表中数据更改的审计跟踪,我的初始设置是设置触发器,但是当数据更新时,它一次更新1列,每个帐户每次更新创建40行(示例只)。

我希望编写一个检查更改的存储过程,给定理想情况下列的数量要将所有列连接成一个字符串,然后将其与自身进行比较以进行更改并创建新记录(如果有)。但是这样做动态,所以我不必为每列都select col1,' + ' col2,' + ' col3,' + 'col4 from table

我已经获得了获取列名称的代码,但是我仍然坚持如何使用相关的SELECT进入OR语句。使用2个表,源表和审计表进行比较。

DECLARE @s VARCHAR(500)


SELECT @s =  ISNULL(@s+', ','') + c.name   
FROM  sys.all_columns c join sys.tables  t 
            ON  c.object_id = t.object_id
WHERE t.name = 'table1'

SELECT @s

所以期望的输出是(基于@s是连接列)

SELECT @s, AccountRef
FROM table1_Source as t1 INNER JOIN
     table2_Audit as t2 ON t1.AccountRef = t2.AccountRef
WHERE t1.AccountRef = t2.AccountRef
AND t1.@s <> t2.@s

0 个答案:

没有答案