2016-08-11 5 views
1

です。SQL Server Management Studioを使用しています。 SQLからのステートメントで「3585c5d240dd4132bab35ab969137f3f」のような主キーを作成したいが、主キーを作成するステートメントがわからない。 誰かがこのような主キーを作成するために、そのステートメントが何であるか教えてもらえますか?"3585c5d240dd4132bab35ab969137f3f"のようにSQLでプライマリキーを作成する文は

+1

Googleを試しましたか? – NickyvV

答えて

0

この値が短いためUniversally Unique IDentifier、またはUUIDのようです。

MS SQL Serverでは、newid()関数を使用してそのような識別子を生成できます。たとえば:

SELECT NEWID() 
0

は、このコードを試してみてください。

ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id, LastName); 
0

1つの方法は、GUIDを使用することです。 SQL Serverでは、関数NEWID(ドキュメントhereを参照してください)。

SELECT REPLACE(NEWID(), "-", ""); 

をしかし、主キーとしてGUIDの用心:The Cost of GUIDs as Primary Keysあなたはダッシュを好きではない場合は、同様REPLACE使用。少し古いですが、まだ興味深いです。

はそれを主キーを作成するには、次のことができます。

  • 機能がデフォルト値として許可されていませんので、
  • は、前トリガーを使用し、あなたの作成文でvarchar型の主キーを()宣言します上記の関数を使用して主キーを生成するを挿入します。
2

まず、そのGUIDを格納する列を追加する必要があります。

alter table your_table 
add field_name uniqueidentifier not null 

次に、あなたは、そのフィールドに主キー制約を作成する必要があります。

alter table your_table 
add constraint PK_[your_table] PRIMARY KEY(field_name) 

最後に、あなたのテーブルにデータを挿入するとき、FIELD_NAMEは(NEWIDを使用して生成される)ので、のように:

insert into your_table(field_name) 
values(newid()) 
0

私はあなたが生成するNEWID()機能を使用する必要があると述べているみんなと一緒に同意しますあなたが欲しいもの。私の推薦は、その列があなたのクラスタ化されたインデックスでもある場合は、おそらくNEWSEQUENTIALID()を使用して、恐ろしいフラグメンテーションとページ分割を避けることです。

関連する問題