可能是重复问题:
GUID / UUID数据库键的优缺点
在SQL Server 2005/8 DB中,是否有必要在某些情况下使用GUID作为主键?例如,MS Sync Framework的使用或数据复制是否强制使用GUID?
可能是重复问题:
GUID / UUID数据库键的优缺点
在SQL Server 2005/8 DB中,是否有必要在某些情况下使用GUID作为主键?例如,MS Sync Framework的使用或数据复制是否强制使用GUID?
CREATE TABLE [dbo].[myTable](
[intId] [int] IDENTITY(1,1) NOT NULL,
[realGuidId] [uniqueidentifier] NOT NULL,
[someData] [varchar](50) NULL,
CONSTRAINT [PK_myTable] UNIQUE NONCLUSTERED
(
[realGuidId] ASC
)
)
CREATE CLUSTERED INDEX [IX_myTable] ON [dbo].[myTable]
(
[intId] ASC
)
您可以像平常一样插入到表中,例如:
INSERT INTO myTable VALUES(NEWID(), 'Some useful data goes here')
更新:我听了一期非常好的dotnetrocks节目,讨论了这个话题,值得一听 - Show #447
我使用GUID作为主键,因为在构建与分布式数据库和一个中央数据库同步所有分布式数据库数据的应用程序时,我不想使用复合主键。使用GUID,我几乎确定当我从所有数据库中提取数据到中央数据库时不会发生冲突(约束违规)。
* 某个GUID在两个不同地方生成相同的概率很小,但不是不可能的。
当数据库不是集中式的或者部分采集是远程执行的时候。