- PR -

Oracleテーブルの一意キーの取得方法について

1
投稿者投稿内容
もん
会議室デビュー日: 2007/11/06
投稿数: 6
投稿日時: 2007-11-06 22:58
いつもお世話になっています。皆様のご意見、大変勉強になります。
このスレッドをご覧下さってありがとうございます。

今回、テーブルのキー情報の取得で行き詰まっており、皆様からヒントを頂きたく投稿いたしました。
現在
OS:WindowsXP
VB.NET(VisualStudio2005)、
DB:OracleまたはSQLServerまたはAccess2003
で開発を行っています。

ODBC接続によってOracleまたはSQLServerのテーブルへアクセスし、任意のテーブルのキー情報を取得する機能を実装しようしており
(1)OdbcDataAdapterで任意のテーブルに接続
(2).FillSchemaメソッドによってDataTableを取得
(3)DataTableのPrimaryKeyプロパティを参照
と考えました。

ここで問題が生じ、
プライマリキーが1列のみで構成されるテーブルの場合は、実際にPrimaryKeyにキー項目が設定されるのですが、
複数列から構成される一意キーを持つテーブルの場合、PrimaryKeyのLengthは0となり、情報が何も入りません。

下記に示す例の場合、社員情報テーブルであれば、PrimaryKeyプロパティに「社員番号」が設定されますが、
給与テーブルの場合、PrimaryKeyの構成要素は何もありません。
<例>
社員情報テーブル
 社員番号  … キー
 社員名
 所属

給与テーブル
 社員番号 … キー
 支払月  … キー
 支払金額

なお、Accessに関してのみ、上記手法で一意キーの情報も取得することができました。
OracleおよびSQLServerの場合、どうすれば一意キーの情報が取得できるでしょうか。
処理の考え方が根本より間違っているかもしれませんが、どうぞよろしくお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2007-11-06 23:39
ODBCはわからないですが、OledbならGetOleDbSchemaTableでスキーマ情報にアクセスできます。

http://support.microsoft.com/kb/309488/ja

もしくは、Oracleのデータディクショナリを検索すれば、キーの情報を取得できるはずです。

1

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