2009-06-18 18 views
9

Ho una colonna uniqueidentifier in una tabella e non è una chiave o un indice. Voglio impostare il valore predefinito utilizzando NEWSEQUENTIALID(), ma ottengo l'errore:Errore durante l'impostazione di newsequentialid() predefinito in sql server 2008

Error validating default for column..

Ma se io uso NEWID() nessun errore. Cosa sta succedendo?

MODIFICA: si può semplicemente ignorare la finestra di errore e continuare.

+0

In SQL2014, è necessario utilizzare il tipo di dati come "uniqueidentifier" al fine di utilizzare il metodo() NEWSEQUENTIALID e non vedrà eventuali messaggi di errore. – HPWD

risposta

9

quotatura accettati risposta di 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 
+7

Trovo che puoi semplicemente ignorare la finestra di errore e continuare. –

+0

La stessa cosa è successa a me quando ho provato ad aggiungere un indice "chiave univoca" su una colonna uniqueidentifier esistente che era già stata popolata con il suo valore predefinito di "newsequentialid". Quando ho salvato il tavolo, ho ricevuto lo stesso avviso, ma come ho detto, puoi semplicemente fare clic su "sì" per ignorare l'avviso e la tabella verrà salvata correttamente. Non riesco a pensare a una circostanza o ragione per cui non avrebbe avuto successo. Non dovrebbe comunque chiamare l'impostazione predefinita se sta aggiornando solo una tabella. – Triynko

+0

All'inizio ho avuto dei problemi a capire cosa cambiare per farlo funzionare. Trovo che sia ALTER TABLE dbo.YourTable ADD CONSTRAINT DF_COLUMN DEFAULT newsequentialid() PER COLONNA –

0

in base alla documentazione: http://msdn.microsoft.com/en-us/library/ms189786.aspx Osservazioni sezione:

... Quando si utilizza NEWSEQUENTIALID() nelle espressioni default, non può essere combinato con altri operatori scalari. Ad esempio, non è possibile eseguire il seguente:

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

Ritiene che la risposta alla tua domanda?

+0

No, sto usando NEWSEQUENTIALID() da solo nel campo predefinito nella finestra di progettazione tabella in SQL Server Management Studio. NEWID() funziona comunque e volevo solo sapere perché. –

+0

Vedo cosa intendi, l'ho appena testato e quando ho impostato NEWSEQUENTIALID() come valore predefinito in SSMS 2008, ricevo un errore ma dopo SQL "CREATE TABLE [dbo]. [Table_1] ([col1] [int] NOT NULL , [uuid] [uniqueidentifier] NOT NULL DEFAULT (NEWSEQUENTIALID())) ON [PRIMARY] "viene eseguito correttamente e non ci sono errori durante la modifica della tabella in seguito. Sembra un errore del mets SSMS. – radekg

Problemi correlati