4

Visual Studio 2012 でデータベース プロジェクトを作成し、ターゲット プラットフォームを「Windows Azure SQL データベース」に設定しました。次のようなテーブルを追加しました。

CREATE TABLE [dbo].[Organization]
(
    [Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY NONCLUSTERED IDENTITY, 
    [Name] NVARCHAR(100) NOT NULL, 
    [CreationDate] DATETIME NOT NULL DEFAULT GetDate()
)

GO

CREATE CLUSTERED INDEX [IX_Organization_CreationDate] ON [dbo].[Organization] ([CreationDate])

しかし、それは不平を言い続けます:

Error   1   SQL71518: The identity column '[dbo].[Organization].[Id]' must be of data type int, bigint, smallint, tinyint, decimal, or numeric with a scale of 0, and the column must not be nullable.  C:\Projects\Gastrology\MGP\trunk\Sources\Cfg.Mgp.Infrastructure.Database\Organization.sql   3   2   Cfg.Mgp.Infrastructure.Database

タイプguidの主キーを作成できない理由を知っている人はいますか? 私は何を間違っていますか?

ありがとう!

4

3 に答える 3

5

IDENTITYと一緒に使用することはできませんGUID

NEWID代わりに使用してください。

CREATE TABLE [dbo].[Organization]
(
    [Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY NONCLUSTERED DEFAULT NEWID(), 
    [Name] NVARCHAR(100) NOT NULL, 
    [CreationDate] DATETIME NOT NULL DEFAULT GetDate()
)
于 2013-08-12T16:18:52.503 に答える
2

このようなことを試してください:-

CREATE TABLE [dbo].[Organization]
(
    [Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY NONCLUSTERED DEFAULT NEWID(), 
    [Name] NVARCHAR(100) NOT NULL, 
    [CreationDate] DATETIME NOT NULL DEFAULT GetDate()
)

このリンクをチェックしてください

ソースから:-

GUID をキー値として使用することの主な欠点は、GUID が大きいことです。ポップあたり 16 バイトで、SQL Server で最大のデータ型の 1 つです。GUID に基づいて構築されたインデックスは、通常は int (4 バイト) である IDENTITY 列に基づいて構築されたインデックスよりも大きく、遅くなります。** > それだけでなく、単に読みにくいだけです。真にグローバルに一意の識別子が必要でない限り、おそらく IDENTITY を使用した方がよいでしょう。

**

于 2013-08-12T16:18:06.157 に答える