【问题标题】:The value of primary key in type uniqueidentifier doesn't changeuniqueidentifier 类型的主键值不变
【发布时间】:2012-05-29 09:42:48
【问题描述】:

我在 Visual Studio 2010 中创建了一个数据库。

此数据库有一个包含 3 列的表。

  • 主键AdId,类型为uniqueidentifier
  • nvarchar 类型的广告名称
  • UserId 类型为 uniqueidntifier

当用户登录并单击按钮时,我希望将一行添加到我的数据库中

  • AdName 的常量值(我确定了)
  • 为用户 ID 登录用户 ID
  • 由数据库自动为 AdId 创建的 Id

添加一行后一切正常,但AdId的值在另一个时间没有改变,这个值一直是00000000-0000-0000-0000-000000000000。

我知道这是一个愚蠢的问题,但我不知道问题出在哪里,我该怎么办。 谢谢

【问题讨论】:

    标签: sql visual-studio-2010 sql-server-2008 uniqueidentifier


    【解决方案1】:

    两件事:

    • 您是否为 AdId 指定了默认 NEWID()?

    • 您是否将00000000-0000-0000-0000-0000000000000x00(二进制)发送到数据库
      例如SELECT CAST(0x00 AS uniqueidentifier)

    基本上,SQL Server 正在按照您的要求进行操作

    【讨论】:

    • 不,我没有指定 NEWID() 的默认值 a 没有发送 00...00 到数据库。
    • @Tena:那么你需要设置一个默认值。插入了一些隐含的 0x00 值
    • 如何设置默认值?您的意思是在身份种子中放置一个值吗?如何指定 NEWID() 的默认值?
    • ALTER TABLE myTable 添加约束 DF_myTable_AdId DEFAULT NEWID() FOR AdId ;
    【解决方案2】:
    CREATE TABLE myTable (
        myId uniqueidentifier NOT NULL
    );
    
    ALTER TABLE myTable ADD CONSTRAINT myConstraint
                            DEFAULT NEWSEQUENTIALID()
                            FOR myId ;
    

    【讨论】:

    • 感谢您的回答,我使用此代码但我不知道为什么它不起作用!
    【解决方案3】:

    将 AdId 列的默认值设置为 newid()

    【讨论】:

    • 感谢您,我将列属性中的默认值或绑定设置为 (newid()),但仍然不起作用:(
    猜你喜欢
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多