Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como alterar a coluna de nula para não nula na tabela do SQL Server - SQL Server/T-SQL Tutorial Parte 52

Cenário:

Você está trabalhando como desenvolvedor do SQL Server com um banco. Eles têm a tabela Dbo.Customer no banco de dados TechBrothersIT com a definição abaixo.

Create Table dbo.Customer
(FirstName VARCHAR(50) Not Null,
LastName VARCHAR(50),
Age SmallInt,
PhoneNumber CHAR(9),
DOB Date,
Gender CHAR(1)
)
 Como você notou que LastName pode ser Null. Esse é o problema. Empresa percebeu que depois e sempre quer ter o valor para LastName. Você é solicitado a fazer a análise e escrever o script Alter para alterar a coluna de nula para não nula. Que coisas você considerará ou sugestões que fornecerá?

Solução:

A primeira coisa a considerar neste cenário é descobrir se algum valor já está inserido na tabela para Sobrenome como Nulo. Se for esse o caso, você não pode realmente ir em frente e alterar a coluna de Null para Not Null. Se você tentar , receberá o erro abaixo.
Msg 515, Level 16, State 2, Line 14Não é possível inserir o valor NULL na coluna 'LastName', tabela 'TechBrothersIT.dbo.Customer'; coluna não permite nulos. UPDATE falha.
Isso significa que temos que lidar com valores nulos nesta coluna primeiro. Você pode conversar com os negócios e perguntar o que eles gostariam de fazer para todos os clientes onde o sobrenome é nulo. Você pode encontrar a lista de clientes em que o Sobrenome é Nulo usando a consulta abaixo.
Select * From dbo.Customer
where LastName Is null
 As empresas podem fornecer sugestões diferentes, como Vamos atualizar o Sobrenome para Desconhecer onde é NuloOu Atualizar o Sobrenome para branco('') se for NuloOu Atualizar a coluna Sobrenome para LNNP (Sobrenome não fornecido)Ou eles voltam para os clientes e obter seu sobrenome para atualizar 
Dependendo das sugestões, vá em frente e atualize os valores na coluna Sobrenome. Digamos que decidimos atualizar para em branco '', podemos usar a consulta abaixo para atualizar
update dbo.Customer
set LastName=''
where LastName is Null
 
 Agora você está pronto para alterar a coluna na tabela de Null para Not Null. 
Alter Table dbo.Customer
Alter Column LastName VARCHAR(50) Not Null