2011-09-14 12 views
13

SQL Serverの列をプライマリキーなしで自動インクリメントできますか?SQL Serverがプライマリキーなしの列を自動的にインクリメント

もしそうなら、どうすればいいのですか?

ありがとうございました

+1

確かに、この列は 'INT IDENTITY'(またはBIGINT)として宣言されていなければなりません。それがプライマリキーである必要はありません - 全くありません... –

+2

何があなたを拘束しましたか? –

+0

@adrian:...あなたのプロダクションシステムではありません。 :-) –

答えて

25

はい。 IDENTITY列を主キーにする必要はありません。

CREATE TABLE T 
(
X INT PRIMARY KEY, 
Y INT IDENTITY(1,1) 
) 

これはいつ便利なのでしょうか。あなたがPKとして使用したい自然なキーを持っているなら、代理代替キーに一意の制約を入れたいと思うでしょう。

FKの関係を設定するために、SQL Serverは列がPKかどうかを気にせず、一意のインデックスのみを必要とします。

+1

レコードがテーブルに追加された順序を簡単に覚えておくことができます。 –

+0

@ラリー - ああ、もちろん。それを考えなかった。 –

+1

@Larry、CreatedDateはデフォルト(getdate())であり、はるかに意味があります。 –

5

IDENTITYキーワードを使用して列を宣言し、単純にPRIMARY KEY制約を作成しないでください。

関連する問題