- ベストアンサー
EXISTSでの列名指定
ALTER TABLEをするSQLを作りたいのですが 走らせる環境にはすでに作ったSQLが走っているかどうかが わかりません。 その場合にif existsで列名が テーブルに入っているか確認したいのですが object_id(N'[所有者][テーブル名]') だとテーブル名は判別できるのですが object_id(N'[所有者][テーブル名][列名]') のように列名を判別する方法はありませんでしょうか? (このやり方ではダメでした) 宜しくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
object_id だけだと select * from sysobjects で取得できる全てが対象となり、テーブルだけではなく、トリガやストアドなども対象となってしまうと思うのですが、、、 システムテーブルは関係ないと思うので、OBJECTPROPERTYでさらに絞ると確実ですよ^^ select case when exists( select * from syscolumns where id in ( --ユーザテーブル一覧に絞る select id from sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 ) and id = object_id('テーブル名') and name = 'カラム名' ) then 'ある' else 'ない' end
お礼
お返事ありがとうございます。 出来ました、SQLServer初挑戦だったので 勉強になります、ありがとうございました。