sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo modificar la columna de nulo a no nulo en la tabla de SQL Server - Tutorial de SQL Server/T-SQL, parte 52

Escenario:

Está trabajando como desarrollador de SQL Server con un banco. Tienen la tabla Dbo.Customer en la base de datos TechBrothersIT con la siguiente definición.

Create Table dbo.Customer
(FirstName VARCHAR(50) Not Null,
LastName VARCHAR(50),
Age SmallInt,
PhoneNumber CHAR(9),
DOB Date,
Gender CHAR(1)
)
 Como notó, LastName puede ser Nulo. Ese es el problema. La empresa notó eso más tarde y siempre quiere tener el valor de LastName. Se le pide que haga un análisis y escriba Alter script para cambiar la columna de nulo a no nulo. ¿Qué cosas considerará o sugerencias brindará?

Solución:

Lo primero que debe tener en cuenta en este escenario es averiguar si ya se han insertado valores en la tabla para Apellido como Nulo. Si ese es el caso, realmente no puede seguir adelante y alterar la columna de nulo a no nulo. Si lo intenta, obtendrá el siguiente error.
Mensaje 515, Nivel 16, Estado 2, Línea 14No se puede insertar el valor NULL en la columna 'Apellido', tabla 'TechBrothersIT.dbo.Customer'; columna no permite nulos. La ACTUALIZACIÓN falla.
Significa que primero tenemos que lidiar con los valores nulos en esta columna. Puede hablar con el negocio y preguntarles qué les gustaría hacer para todos los clientes donde el Apellido es Nulo. Puede encontrar la lista de clientes donde el apellido es nulo utilizando la consulta a continuación.
Select * From dbo.Customer
where LastName Is null
 Las empresas pueden proporcionar diferentes sugerencias, como Actualicemos el Apellido a Desconocido donde es Nulo O Actualice el Apellido a un espacio en blanco ('') si es Nulo O Actualice la columna Apellido a LNNP (Apellido no proporcionado) O regresen a los clientes y obtener su apellido para actualizar 
Según las sugerencias, continúe y actualice los valores en la columna Apellido. Digamos que decidimos actualizar en blanco '', podemos usar la siguiente consulta para actualizar
update dbo.Customer
set LastName=''
where LastName is Null
 
 Ahora está todo listo para cambiar la columna en la tabla de Nulo a No Nulo. 
Alter Table dbo.Customer
Alter Column LastName VARCHAR(50) Not Null