2017-05-12 20 views
0

こんにちは。SQL Serverで更新された列を並べ替える

私はこのようになりますSQLサーバーのテーブルのデザインがあります。この表で

 
NAME  AGE  WORK   BIRTH 
TEST  21  NONE   12/12/2000 

を、私はテーブルの更新時にトリガーを作成し、監査ログテーブルにデータを保存します。この監査ログテーブルには、更新される値と更新された列が格納されます。ここでは、更新された列を取得するクエリスニペットがあります。私はまた、彼女のスタックにこのクエリを取得します。

DECLARE @idTable INT 
SELECT @idTable = T.id 
FROM sysobjects P JOIN sysobjects T ON P.parent_obj = T.id 
WHERE P.id = @@procid 

-- Get COLUMNS_UPDATED if update 
-- 
DECLARE @Columns_Updated VARCHAR(50) 


SELECT @Columns_Updated = ISNULL(@Columns_Updated + ', ', '') + name 
FROM syscolumns 
WHERE id = @idTable 
AND  CONVERT(VARBINARY,REVERSE(COLUMNS_UPDATED())) & POWER(CONVERT(BIGINT, 2), colorder - 1) > 0 

今私の監査ログ表には、次のようになります。

 
OLD    NEW     COLUMNS_UPDATED 
tEST,21,NONE TEST2,20,TEACHER AGE,NAME,WORK 

今私の問題は、私はまた、設計テーブルのように見えるその更新列をソートできるか、です。私の好みの出力は次のようになります。

 
OLD    NEW     COLUMNS_UPDATED 
tEST,21,NONE TEST2,20,TEACHER NAME,AGE,WORK 

私は誰でもこれを手伝ってくれることを願っています。おかげさまで

答えて

0

試してみてください。

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'myTable' 
ORDER BY ORDINAL_POSITION 
+0

それは動作しません。 – user3312649

関連する問題