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

Come modificare la colonna da Null a Not Null nella tabella di SQL Server - Tutorial SQL Server / T-SQL Parte 52

Scenario:

Lavori come sviluppatore SQL Server con una banca. Hanno la tabella Dbo.Customer nel database TechBrothersIT con la definizione seguente.

Create Table dbo.Customer
(FirstName VARCHAR(50) Not Null,
LastName VARCHAR(50),
Age SmallInt,
PhoneNumber CHAR(9),
DOB Date,
Gender CHAR(1)
)
 Come hai notato, il cognome può essere nullo. Quello è il problema. L'azienda ha notato che in seguito e vuole sempre avere il valore per LastName. Ti viene chiesto di eseguire l'analisi e scrivere lo script Alter per modificare la colonna da Null a Not Null. Quali elementi prendere in considerazione o suggerimenti da fornire?

Soluzione:

La prima cosa da considerare in questo scenario è scoprire se nella tabella sono già stati inseriti valori per Cognome come Null. In tal caso, non puoi davvero andare avanti e modificare la colonna da Null a Not Null. Se provi , otterrai un errore inferiore.
Msg 515, livello 16, stato 2, riga 14Impossibile inserire il valore NULL nella colonna 'LastName', tabella 'TechBrothersIT.dbo.Customer'; la colonna non consente valori null. UPDATE non riesce.
Significa che dobbiamo prima occuparci dei valori Null in questa colonna. Puoi parlare con le aziende e chiedere loro cosa vorrebbero fare per tutti i clienti in cui il cognome è nullo. Puoi trovare l'elenco dei clienti in cui il cognome è nullo utilizzando la query sottostante.
Select * From dbo.Customer
where LastName Is null
 L'azienda può fornire suggerimenti diversi, ad esempio aggiorniamo il cognome su Non so dove è Null o aggiorniamo il cognome su vuoto ('') se è Null o aggiorniamo la colonna del cognome su LNNP (cognome non fornito) oppure tornano dai clienti e ottenere il loro cognome da aggiornare 
A seconda dei suggerimenti, andare avanti e aggiornare i valori nella colonna Cognome. Diciamo che abbiamo deciso di aggiornare a vuoto '', possiamo usare la query sottostante per aggiornare
update dbo.Customer
set LastName=''
where LastName is Null
 
 Ora sei pronto per cambiare la colonna nella tabella da Null a Not Null. 
Alter Table dbo.Customer
Alter Column LastName VARCHAR(50) Not Null