首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL UniqueIdentifier

SQL UniqueIdentifier
EN

Stack Overflow用户
提问于 2014-05-14 01:50:01
回答 3查看 1.7K关注 0票数 0

我有一个名为UserCredentials的表,它有一个uniqueidentifier[UserCredentialId]。当我尝试创建一个新用户时,我在第一次尝试中得到00000000-0000-0000-0000-000000000000,然后当我尝试添加另一个用户时,它说PK不能被复制。起初,我很难猜测这意味着什么,但是,我认为这是因为我的uniqueidentifier没有生成随机id。

该怎么办呢?

编辑

下面是我的SQL表结构:

代码语言:javascript
复制
CREATE TABLE [dbo].[UserCredential](
    [UserCredentialId] [uniqueidentifier] NOT NULL,
    [UserRoleId] [int] NOT NULL,
    [Username] [varchar](25) NOT NULL,
    [Password] [varchar](50) NOT NULL,
    [PasswordSalt] [varchar](max) NOT NULL,
    [FirstName] [varchar](50) NOT NULL,
    [LastName] [varchar](50) NOT NULL,
    [PayorCode] [varchar](20) NOT NULL,
    [ProviderCode] [varchar](50) NULL,
    [CorporationCode] [varchar](50) NULL,
    [Department] [varchar](50) NULL,
    [Status] [varchar](1) NOT NULL,
    [DateCreated] [datetime] NOT NULL,
    [DateActivated] [datetime] NULL,
    [Deactivated] [datetime] NULL,
    [DateUpdated] [datetime] NULL,
    [CreatedBy] [varchar](50) NOT NULL,
    [UpdatedBy] [varchar](50) NOT NULL,
    [EmailAddress] [varchar](50) NULL,
    [ContactNumber] [int] NULL,
    [Picture] [varbinary](max) NULL,
 CONSTRAINT [PK_UserCredential_1] PRIMARY KEY CLUSTERED 
(
    [UserCredentialId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

我已经将其设置为(newid()),但仍然无法工作。

EN

回答 3

Stack Overflow用户

发布于 2014-05-14 01:56:39

将用户实例的Id设置为Guid.NewGuid();

代码语言:javascript
复制
user.Id = Guid.NewGuid();
票数 2
EN

Stack Overflow用户

发布于 2014-05-14 04:59:03

将表定义更改为

代码语言:javascript
复制
[UserCredentialId] UNIQUEIDENTIFIER DEFAULT (NEWSEQUENTIALID()) NOT NULL

检查为什么喜欢NEWSEQUENTIALID而不是newid在http://technet.microsoft.com/en-us/library/ms189786.aspx

当GUID列用作行标识符时,使用NEWSEQUENTIALID比使用NEWID函数更快。这是因为NEWID函数导致随机活动,并且使用较少的缓存数据页。使用NEWSEQUENTIALID还有助于完全填充数据和索引页。

票数 1
EN

Stack Overflow用户

发布于 2014-05-14 02:24:51

在插入期间,可以将表中的所有值默认为新值,这与标识非常类似。

运行此命令可以将所有插入的默认值设置为使用newid()。

代码语言:javascript
复制
ALTER TABLE [dbo].[UserCredential] ADD  CONSTRAINT [DF_UserCredential_UserCredentialID]  DEFAULT (newid()) FOR [UserCredentialId]
GO
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23644390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档