- - PR -
SQL Serverでテーブルの主キーやインデックスをSQLで取得したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-10-27 11:45
こんにちは。
SQL Server 2000 で、SQL文を使ってシステムテーブルにアクセスし、主キーや インデックスの貼ってある列を取得したいと思っているのですが、うまく取れません。 具体的には、 select * from sysobjects o join sysindexkeys i on o.id = i.id where o.xtype = 'U' and o.name = 'テーブル名' としても、インデックスが1つで1列しかないにもかかわらず、indidが複数行返ってき ます。 また、sysobjects の xtypeで、PKとすれば主キーオブジェクトは取れるのですが、 その主キーオブジェクトのどの列がキーなのかの情報を取るにはどのシステムテーブ ルにアクセスすればよいかわかりません。 ご存知の方おられませんでしょうか? [ メッセージ編集済み 編集者: maru 編集日時 2004-10-27 11:46 ] | ||||
|
投稿日時: 2004-10-27 13:32
指定したテーブルの主キー列を知りたいってこと?
ちなみに、こういった方法はあまり使わないほうが良いいよ。SQL Server 2005 で一部のシステムテーブルが統廃合されていて互換性が失われているし。どのような利用ケースかしらないけど、できることなら ADO や JDBC などのミドルウェア経由で 主キーを求めるのが良いかと。 | ||||
|
投稿日時: 2004-10-27 13:37
ああ、それと sp_pkeys 使ったほうが楽。
| ||||
|
投稿日時: 2004-10-27 13:43
と注意書きされているので、アプリ開発の場合は [システム ストアド プロシージャ] - [カタログ プロシージャ] sp_tables sp_columns sp_pkeys sp_fkeys 等を、極力使用しているようにしています。 アプリ開発以外(データ移行、メンテ等)であれば直にシステム テーブルを参照してもよいのでしょうが... 識者を待つしかないです。 [追記] #被ったけどそのまま残しておきます [ メッセージ編集済み 編集者: えんぞ@見習 編集日時 2004-10-27 13:46 ] | ||||
|
投稿日時: 2004-10-27 20:08
返答ありがとうございます。
大変参考になりました。ミドルウェアの機能かシステム関数を使うことにします。 Oraclのときは、よくシステムテーブルからテーブル情報を取っていたことがあったので 単純にSQLServerも同様の方法でしようとしてたのでした。 |
1