Come opzione, è possibile creare inizialmente la colonna Null-capable, quindi aggiornare la colonna della tabella con valore non nullo valido s ed infine modificare la colonna per impostare vincolo NOT NULL:
ALTER TABLE MY_TABLE ADD STAGE INT NULL
GO
UPDATE MY_TABLE SET <a valid not null values for your column>
GO
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL
GO
Un'altra opzione è quella di specificare il valore predefinito corretto per la colonna:
ALTER TABLE MY_TABLE ADD STAGE INT NOT NULL DEFAULT '0'
UPD: Si prega di notare che la risposta di cui sopra contiene GO
che è un must quando si esegue questo codice sul server Microsoft SQL. Se si desidera eseguire la stessa operazione su Oracle o MySQL è necessario utilizzare il punto e virgola ;
così:
ALTER TABLE MY_TABLE ADD STAGE INT NULL;
UPDATE MY_TABLE SET <a valid not null values for your column>;
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL;
fonte
2010-08-16 12:14:29
Personalmente preferisco il primo modo qui se si dispone di valori che è possibile inserire nel campo manualmente. In questo modo non devi preoccuparti di creare ed eliminare un vincolo predefinito in cui non ne hai bisogno. –
@MarkWDickson - Il primo sembra più pericoloso per me. Cosa succede se la colonna sbagliata scivolato in istruzione SET: UPDATE MY_TABLE SET Employee_Salary = 0 – acarlon
@acarlon - penso che è di raggiungere. La pericolosa dichiarazione di "aggiornamento" da te menzionata sarebbe dannosa in qualsiasi query. Dovrebbe essere abbastanza semplice da vedere se hai una colonna in più nell'istruzione 'update' qui. In genere si aggiungono solo una colonna o due alla volta. Se ti capita di aggiungere una colonna in più all'istruzione 'update' che non vi appartiene, in questo esempio, forse non dovresti essere responsabile dei dati in primo luogo. –