- PR -

SQLサーバーで主キーの情報を抜くには

1
投稿者投稿内容
NAK
ベテラン
会議室デビュー日: 2002/10/27
投稿数: 91
投稿日時: 2004-07-27 19:03
皆様にはいつもお世話になっております。

SQL文にてあるデータベースのテーブル名称、カラム一覧、主キーの3つの情報を取りたいと思っております。
テーブル名称、カラム一覧はシステムテーブルの「sysobjects」「syscolumns」から抜けるのですが、主キーの情報がどうも見当たりません。
どなたか、システムテーブルに詳しい方がいらっしゃいましたら教えてください。
よろしくお願いいたします。
でくのぼう
大ベテラン
会議室デビュー日: 2003/10/06
投稿数: 162
投稿日時: 2004-07-27 19:06
SQLServerをいじったこと無いのですが、その命名規則なら
sysconstraints とか?
希衣
会議室デビュー日: 2002/05/08
投稿数: 8
投稿日時: 2004-07-27 19:28
希衣と申します。
以下のようなSQLを用いることで主キー情報の取得を行うことができます。

select name FROM fms..sysindexes WHERE
id IN(
select id FROM fms..sysobjects WHERE name = @TableName
)
AND
indid = 1

参考:
 SQLServer BooksOnline
 mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/ts_sys-i_76wj.htm

 上記ドキュメントの情報を参照しますと、以下のような記述があります。
  ・indid インデックスのID。1 = クラスタ化インデックス

 そのため、sysobjectsテーブルと組み合わせることで、
 主キーの情報が取得できると思います。




[ メッセージ編集済み 編集者: 希衣 編集日時 2004-07-27 19:30 ]
よねだ
常連さん
会議室デビュー日: 2002/10/13
投稿数: 22
投稿日時: 2004-07-27 22:22
 米田です。
>主キーの情報がどうも見当たりません。
sp_helpconstraint
の実行結果に含まれます。
 例
EXEC sp_helpconstraint 'Categories'
NAK
ベテラン
会議室デビュー日: 2002/10/27
投稿数: 91
投稿日時: 2004-07-27 23:16
よねだ様、希衣様、でくのぼう様
貴重なアドバイス、大変ありがとうございます。
何とかいけそうな気がしてきました。
明日、早速会社で試してみます。
また、引き続き、ご指導ご鞭撻のほど、よろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)