- Compreendendo as limitações de dados em colunas NOT NULL
- Anulação de dados de coluna existentes
- Alterar a estrutura de dados da coluna
- Verificar nulidade alterada
Alterando a estrutura de dados de uma coluna no SQL Server de
NULL
para NOT NULL
, não permitindo valores não nulos nessa coluna, geralmente é executado usando o método ALTER TABLE
relativamente simples sintaxe para alterar adequadamente a coluna em questão. Neste tutorial, examinaremos as importantes precauções de segurança necessárias ao alterar existentes dados em uma coluna, antes de realmente emitir qualquer
ALTER
comandos que potencialmente causariam danos à própria tabela. Compreendendo as limitações de dados em colunas NOT NULL
Antes que qualquer alteração seja feita em sua tabela, é importante examinar brevemente quais dados podem (e não podem) ser especificados em uma coluna existente que você deseja alterar para
NOT NULL
, garantindo que nenhuma linha tenha permissão para ter um NULL
valor nessa coluna. Mais importante, todos os
NULL
existentes valores dentro da coluna devem ser atualizado para um valor não nulo antes do ALTER
comando pode ser usado com sucesso e a coluna feita NOT NULL
. Qualquer tentativa de definir a coluna como NOT NULL
enquanto real NULL
os dados permanecerem na coluna resultarão em erro e nenhuma alteração ocorrerá. Anulando dados de colunas existentes
Para garantir que não haja
NULL
valores em nossa coluna, usaremos um UPDATE
básico comando, aplicável explicitamente a linhas onde o valor é atualmente NULL
. Por exemplo, temos uma tabela básica de client
dados com name
, email
e phone
. Atualmente alguns dos registros têm um NULL
phone
valor, que não queremos permitir:clientsID name email phone
1 Neville Estes [email protected] 1-843-863-2697
2 Flynn Fry [email protected]
3 Wyatt Schmidt [email protected] 1-950-895-1847
4 Oleg Hill [email protected] 1-173-344-1578
5 Randall Bullock [email protected]
6 Lamar White [email protected] 1-421-757-4907
7 Fuller Hill [email protected] 1-178-437-8281
8 Ulysses Boyle [email protected] 1-535-515-1494
9 Paki Palmer [email protected]
10 Kamal Buchanan [email protected] 1-325-847-4838
Portanto, podemos inserir um valor padrão para todos os
phone
valores que são atualmente NULL
com a seguinte afirmação:UPDATE
clients
SET
phone = '0-000-000-0000'
WHERE
phone IS NULL;
Agora nosso
NULL
os valores foram todos substituídos pelo valor que consideramos o default
, 0-000-000-0000
:clientsID name email phone
1 Neville Estes [email protected] 1-843-863-2697
2 Flynn Fry [email protected] 0-000-000-0000
3 Wyatt Schmidt [email protected] 1-950-895-1847
4 Oleg Hill [email protected] 1-173-344-1578
5 Randall Bullock [email protected] 0-000-000-0000
6 Lamar White [email protected] 1-421-757-4907
7 Fuller Hill [email protected] 1-178-437-8281
8 Ulysses Boyle [email protected] 1-535-515-1494
9 Paki Palmer [email protected] 0-000-000-0000
10 Kamal Buchanan [email protected] 1-325-847-4838
Alterar a estrutura de dados da coluna
Agora que não há
NULL
valores por mais tempo, podemos emitir nosso ALTER
instrução para atualizar a coluna para que todas as adições futuras não permitam NULL
valores. Como estamos alterando o phone
coluna neste exemplo, a instrução será algo como isto:ALTER TABLE
clients
ALTER COLUMN
phone
NVARCHAR(20) NOT NULL;
Verificar nulidade alterada
Depois que a alteração em sua coluna for feita, é uma boa prática verificar se a coluna não permite mais nenhum
NULL
valores executando um simples INSERT
teste e tentando inserir um novo registro com o NULL
valor na coluna alterada:INSERT INTO
clients(name, email, phone)
VALUES
('John Doe', '[email protected]', NULL);
Se tudo ocorreu conforme o planejado, o SQL Server emitirá um erro informando que a coluna não permite
NULL
valores:Cannot insert the value NULL into column 'phone', table 'library.dbo.clients'; column does not allow nulls. INSERT fails. [SQL State=23000, DB Errorcode=515]