2009-12-22 15 views

risposta

41

Si potrebbe aggiungere la colonna e fornire il valore di default da utilizzare per tutti gli attuali filari.

ALTER TABLE foo 
ADD bar bit 
DEFAULT 0 NOT NULL; 
+4

In genere mi piace NAME il mio vincolo - anche i vincoli predefiniti - nel caso in cui ho bisogno di rilasciarli in seguito. I nomi predefiniti "DF__TimeZones__IsUsa__3D5E1FD2" sono un po 'difficili da ricordare ..... –

0

ho fatto anche come si dice "crearlo come annullabile, fare un inserto di accenderlo non annullabili". Non ho avuto problemi a farlo in questo modo.

non ho ancora bisogno di trovare un modo migliore, tuttavia Sono incuriosito se c'è un altro modo ....

0

Io di solito creare il campo come nullable con un valore predefinito come falsa nel tuo caso aggiornare tutti i campi che erano nel database prima quindi passare a NULL

1
ALTER TABLE dbo.MyTable ADD MyColumn bit NOT NULL DEFAULT 0 

Per quello che vale, puoi attivare Enterprise Manager, apportare le modifiche nell'interfaccia utente e quindi generare uno script di modifica - e puoi vedere come realizzerebbe questo tipo di attività.

3
ALTER TABLE foo ADD bar bit DEFAULT 0 NOT NULL WITH VALUES; 

La clausola "con valori" propaga il valore predefinito in righe esistenti.

+1

@marc_s, l'ho appena eseguito senza "WITH VALUES" per la mia colonna bit e ha funzionato. Sei sicuro? – KingNestor

+1

@KingNestor, provalo con un valore predefinito di 1 o qualcosa che non è tutti gli zeri binari. –

+4

WITH VALUES viene utilizzato nel caso di una colonna NULLABLE e si desidera utilizzare il valore predefinito anziché NULL. –

1

In alternativa alle risposte elencate c'è un'altra sintassi disponibile che può soddisfare alcune persone meglio, per esempio se si utilizza strumenti come 'ReadyRoll'.

ALTER TABLE [dbo].[FOO] ADD BAR bit NOT NULL CONSTRAINT [df_Bar] DEFAULT 0 

Partenza this SO answer capire perché nominare i vostri vincoli (il df_Bar sopra) è bello.

Problemi correlati