• ベストアンサー

.net 複数の主キーを設定する方法

VB2005、SQLServer2005環境です。 主キーの設定方法について教えて下さい。 主キーが一つの場合下記のように記述しますが、複数ある場合はどう記述すればよろしいですか? お願いします。 strsql = "SELECT * FROM Aテーブル" Dim comm As SqlCommand = New SqlCommand(strsql, Con) Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) Dim ds As DataSet = New DataSet() dataadapter.Fill(ds, "Aテーブル") Dim dt As New DataTable dt = ds.Tables("Aテーブル") '主キーの設定 dt.PrimaryKey = New DataColumn() {dt.Columns("コード1")}

質問者が選んだベストアンサー

  • ベストアンサー
noname#259269
noname#259269
回答No.2

既に回答がついていますが補足。 要するに dt.PrimaryKey = New DataColumn() {dt.Columns("コード1"), dt.Columns("コード2")} とすると、コード1 + コード2 の主キーが作成されます。 表題から、主キーそのものを複数個設定したいように読めるのですが、主キーというのは、1テーブルにつき1つしか設定できません、念のため。

noname#208236
質問者

お礼

主キーって1テーブルにつき1つ??? いくつでも設定できると思うんですが、DATASETには一つということなんでしょうか? 主キーの作成方法はわかりました。 ありがとうございました。

その他の回答 (3)

回答No.4

「主キーが複数」という「言い方」が良くないだけかも。 「複数カラムの組で主キーを構成している」とか言った方が良いかも。

noname#208236
質問者

お礼

そういうことでしたらわかりました。 例えば、市町村テーブルに都道府県コード、市町村コード、市町村名のフィールドがあり、都道府県コード、市町村コードを主キーにしていたら、それは複数主キーがあるのではと思ってました。 ありがとうございました。

noname#259269
noname#259269
回答No.3

>いくつでも設定できると思うんですが、DATASETには一つということなんでしょうか? 逆にいくつでも設定できるという情報はどこから得ましたか? 出展を教えてください。 主キーとは、テーブル内の複数レコードの中から1つのレコードを特定できるキーで、1テーブルに1つ設定できます。 DataSet 内には複数の DataTable を格納でき、DataTable 毎に1つ主キーが設定できますから、DataSet 内には複数の主キーが存在し得るという事は言えます。

回答No.1

>dt.PrimaryKey = New DataColumn() {dt.Columns("コード1")} DataColumnを配列で定義しているのだから、必要なキーの数だけ配列の中身を定義してあげるだけですよ。

noname#208236
質問者

補足

dt.PrimaryKey = New DataColumn() {dt.Columns("コード1")} dt.PrimaryKey = New DataColumn() {dt.Columns("コード2")} dt.PrimaryKey = New DataColumn() {dt.Columns("コード3")} と書くという意味ですか?

関連するQ&A

専門家に質問してみよう