Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Posso aggiungere una colonna non nulla senza valore DEFAULT

No, non puoi.

Perché se potessi, SQL non saprebbe cosa mettere come valore nei record già esistenti. Se non avevi alcun record nella tabella funzionerebbe senza problemi.

Il modo più semplice per farlo è creare la colonna con un valore predefinito e quindi rimuovere il valore predefinito.

ALTER TABLE dbo.MyTable ADD
MyColumn text NOT NULL CONSTRAINT DF_MyTable_MyColumn DEFAULT 'defaultValue'
ALTER TABLE dbo.MyTable
DROP CONSTRAINT DF_MyTable_MyColumn

Un'altra alternativa sarebbe aggiungere la colonna senza il vincolo, riempire i valori per tutte le celle e aggiungere il vincolo.