ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

MSSQL インデックス プライマリキー

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 .6 .7 | 投稿日時 2011-7-13 9:18
nkmt  長老   投稿数: 1668
MSSQLのインデックス設定で、重複可/不可の右に
プライマリキーというチェックボックスがあります。

主キーとなるインデックスには、この
プライマリキーというチェックボックスには
チェックを付けた方がいい事あるのでしょうか?

MS-SQLではプライマリキーは必須です、という投稿も
以前あったようですが。
投票数:1 平均点:10.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-7-13 9:50
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです

一般的に PRIMARY KEY というのは 正確には
PRIMARY KEY制約 でして
indexに対しての制約条件です

ただしくは indexにPRIMARY KEY制約を付けたindexを
PRIMARY KEY(主キー)と呼びます

ですので 上記制約を付けたい場合には チェックします
でわ〜でわ〜
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-7-13 13:26
Tanda  長老   投稿数: 2151
nkmt さん、こんにちは。

プライマリキーについて長い返信を書いたのですが、送信時に
セッションタイムアウトで消えてしまいました。ショック!!

また、あとで書きます。

タンダコンピュータ/丹田 昌信
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-7-13 14:16
nkmt  長老   投稿数: 1668
> セッションタイムアウトで消えてしまいました。ショック!!

時間計った事ないですが、
放置していて、インターネットエクスプローラで
F5:更新 すると再度ログインし直さないといけなくなりました。

自分だけかと思っていました。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-7-13 14:10
05540  新米   投稿数: 19
丹田さん、こんにちは。

> セッションタイムアウトで消えてしまいました。ショック!!

他のスレッドではありますが、私も経験しました。

この1ヶ月位で仕様の変更があったんでしょうかね?
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-7-20 16:48
suitesoft  半人前 居住地: 埼玉県  投稿数: 35
私が認識しているのは、
チェックが無い場合、MS−SQLのテーブルにキーが作成されないです。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-7-21 10:08
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは  Puです

チェックしなくても keyは作成されますよ
このチェックはprimary のチェックです

投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-7-21 10:29
nkmt  長老   投稿数: 1668


Magic eDeveloper V10 チュートリアルSQL編 の 36ページ に
http://www.magicsoftware.co.jp/training/introduction/introduction.html

MSSQL SERVER の インデックス定義の説明があったのですが
U=重複不可 にする説明はあったのですが、
プライマリーキー に関しての説明はありませんでした。


プライマリーキー にチェックを付けると
SQL Server Management Studioでテーブルを見た時に、
 キー
というのが増えますね。

プライマリーキー のチェックを外すと
 キー
が無くなりました。

SQL Server Management Studioでテーブルを見た時に、
 キー と
 インデックス というのがありますね。

この2つの違いが全然意味がわからないので勉強したいと思います。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-7-26 12:10
Tanda  長老   投稿数: 2151
nkmt さん、こんにちは。

どうもこれは、SQLServer と Oracle を別々に考えないとプライマリキー
の概念が捉えにくいみたいですね。

SQL の汎用解説でも、「SQLServer だけは例外」という記述が多いようです。

タンダコンピュータ/丹田 昌信
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-7-22 9:57
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは Puです

SQLserverの場合 キー項目に現れるのは
何度も記載しておりますが
Primaryキー制約のあるindexの事です

でわ〜でわ〜

投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-7-26 14:25
nobukoshi802  一人前   投稿数: 118
Oracleの場合、ROWIDがあるので、選択レコードが
レコード後処理で、ROWIDをキーとして更新します。

MS-SQLの場合(多くのRDBMS)、テーブルに対して
Oracleのように、レコード一意になるキーが存在しないので
プライマリーキーを一意として、レコードを更新します。

投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-7-26 14:37
Tanda  長老   投稿数: 2151
nobukoshi802 さん、こんにちは。

> MS-SQLの場合(多くのRDBMS)、テーブルに対して
> Oracleのように、レコード一意になるキーが存在しないので
> プライマリーキーを一意として、レコードを更新します。

昔のバージョンはそうでしたが、今の SQLServer は可能です。
ですので、それとはちょっと意味が違いますね。

タンダコンピュータ/丹田 昌信
投票数:0 平均点:0.00
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2011-7-26 14:50 | 最終変更
Tanda  長老   投稿数: 2151
これは、Pu さんが言われるように、基本的には制約を掛けるか
掛けないかの問題のようです。

じゃあ、その「制約」っていったい何?という問題になってくるの
ですが、「NULL が許可されない」とか、「修正が効かない」とか、
そういったたぐいの制約であるといった解説が多いです。

ところが、実際にこれらの制約を実験してみると、DB によって動きが
違うようです(たいていの場合、SQLServer だけが例外となります)。

したがって、プライマリキーの見方は、DB によって違うみたいです。

※基本的には、このチェックはデフォルトのまま、「無し」でも特に
問題ないと思います。制約を掛けたいときだけに、チェックを入れれば
いいと思います。ユニークキーとは別問題ですね。

タンダコンピュータ/丹田 昌信
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約