2009-06-18 128 views
9

我在表中有一個uniqueidentifier列,它不是一個鍵或索引。我想設置使用NEWSEQUENTIALID()的默認值,但我得到的錯誤:在sql server 2008中設置newsequentialid()默認值時出錯

Error validating default for column..

但是,如果使用NEWID()沒有錯誤。這是怎麼回事?

編輯:你可以忽略錯誤對話框並繼續。

+0

在SQL2014,你需要使用的數據類型爲「唯一標識符」,以使用NEWSEQUENTIALID()方法中,你將不會看到任何錯誤消息。 – HPWD 2017-01-12 19:19:37

回答

9

報價接受this question答案。

Workaround: create your table without specifying any default, and then type in this T-SQL statement in a normal query window and run it:

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

根據文檔: http://msdn.microsoft.com/en-us/library/ms189786.aspx 備註部分:

... 當NEWSEQUENTIALID()在缺省表達式時,它不能與其它標算組合。例如,您不能執行以下操作:

CREATE TABLE mytable的(唯一標識符ColumnA DEFAULT dbo.myfunction(NEWSEQUENTIALID())) ...

是否回答你的問題?

+0

不,我使用NEWSEQUENTIALID()本身在sql server management studio中表設計器的默認字段中。 NEWID()的作品,但我只是想知道爲什麼。 – 2009-06-19 03:35:59

+0

我明白你的意思了,我剛剛測試過,並且在設置NEWSEQUENTIALID()作爲SSMS 2008中的默認值時,我得到一個錯誤,但在SQL後面出現了「CREATE TABLE [dbo]。[Table_1]([col1] [int] NOT NULL ,[uuid] [uniqueidentifier] NOT NULL DEFAULT(NEWSEQUENTIALID()))ON [PRIMARY]「執行得很好,稍後編輯表時沒有錯誤。看起來像一個SSMS錯誤methinks。 – radekg 2009-06-19 10:09:49