重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ALTER TABLEをするSQLを作りたいのですが
走らせる環境にはすでに作ったSQLが走っているかどうかが
わかりません。
その場合にif existsで列名が
テーブルに入っているか確認したいのですが

object_id(N'[所有者][テーブル名]')
だとテーブル名は判別できるのですが
object_id(N'[所有者][テーブル名][列名]')
のように列名を判別する方法はありませんでしょうか?
(このやり方ではダメでした)
宜しくお願いいたします。

A 回答 (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
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
出来ました、SQLServer初挑戦だったので
勉強になります、ありがとうございました。

お礼日時:2006/05/30 02:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

今、見られている記事はコレ!