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 nullAs 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 NullAgora 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