人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQL Server2005で、複合キーを持つテーブルを作りたいです。

GUIツールの機能ではなく、SQL文で作りたいのですが、
どんなSQLを書いたらよいでしょうか。
できればCreate文の一文が良いですが、無理であればALTER文でもかまいせん。

●質問者: timestep
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●10ポイント

http://uchukamen.com/SQL2008/Index/index.htm

CREATE UNIQUE CLUSTERED INDEX・・・・
って記述します。


ALTERは変更ですね。


timestepさんのコメント
ストアドプロシージャはよくわからないのですが、リンク先のページだと複数のカラムに複合キーを設定してるのはどの個所になるのでしょうか。 また設定したいのはインデックスではなく、複合キーなのですが、まったく同じものなのでしょうか。

きゃづみぃさんのコメント
>> CREATE NONCLUSTERED INDEX [郵便番号3] ON [dbo].[郵便番号] ([郵便番号] ASC, [県ID] ASC, [市区ID] ASC, [町名] ASC ) << こちらになります。

timestepさんのコメント
CREATE TABLE文で使えるようなものだと良かったです。その構文だとストアドでないと使えないようですね。

きゃづみぃさんのコメント
ストアドって CREATE TABLE文もストアドなんですか?

timestepさんのコメント
「CREATE NONCLUSTERED INDEX [郵便番号3] ON ?」 ってCREATE TABLE文ではないですよね。 対象のテーブル名も別途ストアドの記述のどこかで指定する必要がありますよね

きゃづみぃさんのコメント
CREATE TABLE文と同様に使えるものですということです。

きゃづみぃさんのコメント
ちなみに CREATE INDEX 構文は CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) [ WITH < index_option > [ ,...n] ] [ ON filegroup ] < index_option > ::= { PAD_INDEX | FILLFACTOR = fillfactor | IGNORE_DUP_KEY | DROP_EXISTING | STATISTICS_NORECOMPUTE | SORT_IN_TEMPDB } です。 テーブル名は table の箇所に記述します。

きゃづみぃさんのコメント
テーブルの作成後に キーの追加は できますよ。

timestepさんのコメント
[dbo].[郵便番号]というのがテーブルだったんですね。 作りたいのはインデックスではなく、複合キーなのですが、 上記のCreateIndexで作られるのはインデックスでしょうか、複合キーでしょうか、両方作られるということでしょうか。

きゃづみぃさんのコメント
項目を 複数記述すれば 複合キーでしょう。 っていうか インデックスって キーだよね?

2 ● うぃんど
●90ポイント ベストアンサー

単純な例 プライマリーキーにするカラムにはNOT NULL制約をつけましょう。

CREATE TABLE テーブル名 (
 カラムA INT NOT NULL,
 カラムB INT NOT NULL,
 カラムC varchar(255),
 PRIMARY KEY(カラムA,カラムB)
);

timestepさんのコメント
ありがとうございます。うまくできました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ