2017-01-21 5 views
0

ある列を省略していること、私は(SELECT *のような)テーブルからすべての情報を返しますクエリを作成するために苦労していますが、私は列を省略したいと思います自動増分。すべてのデータを取得しますが、自動インクリメント

理由は、グリッドビューコントロールですべてのデータを表示しています(SELECT *を使用しているため、使用可能な列がわからないためです)、テーブルを開いて更新を実行できるようにしますでる。ただし、これにより、編集のための自動増分として割り当てられた列が開き、更新クエリが機能しなくなります。

は、これまでのところ、私はそれが何らかの形で役立つだろうと思われる「sys.columns.is_identity」テーブルを見つけ、私はちょうど私が動的SELECTでこれを使用することができますかどうかはわかりません。 カラムが常にわかっているわけではないので、私はSELECT *を使用して必要な初期データを取得します。あなたはsys.columnsと動的クエリを使用しているこれを行うには、唯一の方法を述べたように

答えて

1

DECLARE @col_list VARCHAR(8000) 

SET @col_list = (SELECT ',' + Quotename(c.NAME) 
       FROM sys.columns c 
         JOIN sys.objects o 
          ON c.object_id = o.object_id 
       WHERE o.NAME = 'table_name' 
         AND is_identity <> 1 
       ORDER BY column_id 
       FOR xml path('')) 
SET @col_list = Stuff(@col_list, 1, 1, '') 

EXEC('select '[email protected]_list +' from yourtable') 
関連する問題