2013-08-09 7 views
9

Desidero aggiungere un vincolo predefinito utilizzando ALTER TABLE in SQL Server, ma ho ricevuto invece il messaggio di errore riportato di seguito.'non valido per la creazione di un vincolo predefinito' errore quando si tenta di aggiungere un vincolo a una tabella esistente

colonna 'StartDate' nella tabella 'Register' non è valido per la creazione di un vincolo default. .

So che posso dichiarare un vincolo quando creo una tabella, ma che non è la situazione mi trovo in Spero che qualcuno mi può aiutare;)

Ecco il mio alter dichiarazione:

ALTER TABLE [dbo].[Register] 
    ADD CONSTRAINT [Register_StartDate] DEFAULT (GETDATE()) FOR StartDate 

E questo è il mio creare script di tabella:

CREATE TABLE [dbo].[Register] 
    (
    [ID]  [INT] IDENTITY(1, 1) NOT NULL, 
    /* ....*/ 
    [StartDate] [DATETIME] NULL 
) 

Modificato: fisso: I rinunciare t che il campo [StartDate] non esiste nemmeno nella tabella. Colpa mia!

+0

Sta funzionando bene per me. –

+1

Impossibile riprodurre: deve esserci qualcos'altro in corso. Sei (a) nel database giusto, (b) sicuro che la tua tabella 'Register' è veramente creata in questo modo, e (c) che 'StartDate' è veramente' DATETIME' in quella tabella ?? –

+0

Hai provato ad aggiungere il vincolo predefinito mentre crei la colonna? funziona? – Nilesh

risposta

9

Per quanto ne so, ci sono due possibili circostanze che potrebbero causare questo errore.

Il tentativo di aggiungere un vincolo di default:

  1. una colonna calcolata.
  2. Una colonna che non esiste affatto!

Per la definizione della tabella

CREATE TABLE dbo.Register 
    (
    ID INT IDENTITY(1, 1) NOT NULL, 
    Computed AS 'Foo' 
) 

Entrambe le seguenti affermazioni con errore 1752.

ALTER TABLE dbo.Register 
    ADD CONSTRAINT C1 DEFAULT 'X' FOR Computed 

ALTER TABLE [dbo].[Register] 
    ADD CONSTRAINT [Register_StartDate] DEFAULT (GETDATE()) FOR StartDate 

Ci sono various other conditions su cui non è permesso di aggiungere un vincolo di default ad un colonna ma questi hanno tutti i loro numeri e messaggi di errore univoci.

+------------------------------------+--------------+ 
|    Reason    | Error number | 
+------------------------------------+--------------+ 
| Column is IDENTITY     |   1754 | 
| Column is timestamp/rowversion  |   1755 | 
| Sparse Column      |   1791 | 
| Default constraint already present |   1781 | 
+------------------------------------+--------------+ 
Problemi correlati