web-dev-qa-db-ja.com

一意識別子の自動インクリメント

基本的に、identityと同じようにuniqueidentifierを使用します。値を挿入したくありません。自動的に値を挿入する必要があります。行ごとに値が異なります。タイプuniqueidentifierの列に自動インクリメントを設定できません( 'autoincrement'プロパティはfalseに設定されており、編集できません)。

24
Rasto

またはさらに良い:newsequentialid()をUNIQUEIDENITIFER列のデフォルトとして使用します。これにより、やや連続した一連のGUIDが得られます。

_CREATE TABLE dbo.YourTable   
   (SerialID UNIQUEIDENTIFIER 
        CONSTRAINT DF_SerialID DEFAULT newsequentialid(),
     .... (other columns)......
   )
_

問題は次のとおりです。newsequentialidはonly列のデフォルトとして使用できます-関数などとして呼び出すことはできません。しかし、それはあなたの要件に合うようです。

UPDATE:SQL Server Management Studioには確認済みのバグがあり、newsequentialid()をインタラクティブなテーブルデザイナー。

参照: http://social.msdn.Microsoft.com/Forums/en-US/sqltools/thread/cad8a4d7-714f-44a2-adb0-569655ac66e6

回避策:デフォルトを指定せずにテーブルを作成し、通常のクエリウィンドウでこのT-SQLステートメントを入力して実行します。

_ALTER TABLE dbo.YourTable
    ADD CONSTRAINT DF_SerialID DEFAULT newsequentialid() FOR SerialID
_

これでうまくいくはずです!

30
marc_s

SQLServerではC#ではなく….

列をPRIMARY KEYおよびROWGUIDとして設定します

RowGuid http://img341.imageshack.us/img341/8867/sqlserverrowguid.png

6
BrunoLM

おもう

CREATE TABLE dbo.YourTable
(
    SerialID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT newsequentialid()
)

簡単です

3
Andrii

NewID()をデフォルト値として使用します。少なくとも、これはSQL Serverに対して行うことです。

3
Randy Minder