【问题标题】:Error setting newsequentialid() default in sql server 2008在 sql server 2008 中设置 newsequentialid() 默认值时出错
【发布时间】:2010-11-04 04:19:15
【问题描述】:

我在表中有一个 uniqueidentifier 列,它不是键或索引。我想使用 NEWSEQUENTIALID() 设置默认值,但出现错误:

验证列的默认值时出错..

但是如果我使用 NEWID() 没有错误。怎么回事?

编辑:您可以忽略错误对话框并继续。

【问题讨论】:

  • 在 SQL2014 中,您需要使用数据类型为“uniqueidentifier”才能使用 newsequentialid() 方法,您不会看到任何错误消息。

标签: sql-server-2008


【解决方案1】:

引用this question 接受的答案。

解决方法:创建表而不指定任何默认值,然后在普通查询窗口中键入此 T-SQL 语句并运行它:

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

【讨论】:

  • 当我尝试在已填充默认值“newsequentialid”的现有唯一标识符列上添加“唯一键”索引时,同样的事情发生在我身上。当我保存表格时,我收到了同样的警告,但正如 P u l 提到的,您只需单击“是”即可忽略警告,表格将成功保存。我想不出它不会成功的情况或原因。如果它只是更新一个表,它不应该调用默认值。
  • 一开始我很难弄清楚要改变什么才能使它对我有用。我发现它是 ALTER TABLE dbo.YourTable ADD CONSTRAINT DF_COLUMN DEFAULT newsequentialid() FOR COLUMN
【解决方案2】:

【讨论】:

    【解决方案3】:

    根据文档: http://msdn.microsoft.com/en-us/library/ms189786.aspx 备注部分:

    ... 在 DEFAULT 表达式中使用 NEWSEQUENTIALID() 时,不能与其他标量运算符组合使用。例如,您不能执行以下操作:

    CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID())) ...

    这能回答你的问题吗?

    【讨论】:

    • 不,我在 sql server management studio 的表设计器的默认字段中单独使用 NEWSEQUENTIALID()。 NEWID() 但是有效,我只是想知道为什么。
    • 我明白你的意思,我刚刚测试过,在 SSMS 2008 中将 NEWSEQUENTIALID() 设置为默认值时出现错误,但遵循 SQL "CREATE TABLE [dbo].[Table_1]([ col1] [int] NOT NULL, [uuid] [uniqueidentifier] NOT NULL DEFAULT (NEWSEQUENTIALID())) ON [PRIMARY]" 执行得很好,以后编辑表时没有错误。看起来像是一个 SSMS 错误。
    【解决方案4】:

    这是不正确的。

    按照这里的步骤:

    http://www.geekinterview.com/question_details/31705

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多