アプリ版:「スタンプのみでお礼する」機能のリリースについて

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")}

A 回答 (4件)

「主キーが複数」という「言い方」が良くないだけかも。


「複数カラムの組で主キーを構成している」とか言った方が良いかも。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/04 08:52

>いくつでも設定できると思うんですが、DATASETには一つということなんでしょうか?



逆にいくつでも設定できるという情報はどこから得ましたか?
出展を教えてください。

主キーとは、テーブル内の複数レコードの中から1つのレコードを特定できるキーで、1テーブルに1つ設定できます。
DataSet 内には複数の DataTable を格納でき、DataTable 毎に1つ主キーが設定できますから、DataSet 内には複数の主キーが存在し得るという事は言えます。
    • good
    • 0

既に回答がついていますが補足。


要するに
dt.PrimaryKey = New DataColumn() {dt.Columns("コード1"), dt.Columns("コード2")}
とすると、コード1 + コード2 の主キーが作成されます。

表題から、主キーそのものを複数個設定したいように読めるのですが、主キーというのは、1テーブルにつき1つしか設定できません、念のため。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/09/02 17:14

>dt.PrimaryKey = New DataColumn() {dt.Columns("コード1")}



DataColumnを配列で定義しているのだから、必要なキーの数だけ配列の中身を定義してあげるだけですよ。

この回答への補足

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

補足日時:2008/09/02 17:05
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています