Eu tenho uma tabela que possui várias colunas inteiras anuláveis. Isso é indesejável por vários motivos, por isso estou procurando atualizar todos os nulos para 0 e depois definir essas colunas para NOT NULL
. Além de alterar nulos para 0
, os dados devem ser preservados.
Estou procurando a sintaxe específica do SQL para alterar uma coluna (chame-a ColumnA
) para " not null
". Suponha que os dados foram atualizados para não conter nulos.
Usando o SQL Server 2000 .
sql-server
tsql
null
alter-table
alter-column
Karmic Coder
fonte
fonte
NOT NULL
pode causar muitos registros.Respostas:
Primeiro, faça todos os
NULL
valores atuais desaparecerem:Em seguida, atualize a definição da tabela para não permitir "NULLs":
fonte
Eu tive o mesmo problema, mas o campo costumava usar como padrão nulo e agora quero usar como padrão 0. Isso exigiu a adição de mais uma linha após a solução do mdb:
fonte
Você precisará fazer isso em duas etapas:
fonte
Para o Oracle 11g, consegui alterar o atributo da coluna da seguinte maneira:
Caso contrário, a resposta de abatichev parecia boa. Você não pode repetir a alteração - ela reclama (pelo menos no SQL Developer) que a coluna já não é nula.
fonte
datatype
. Apenascolumname NOT NULL
é suficiente. Veja a documentação .isso funcionou para mim:
fonte
Desde que a coluna não seja um identificador exclusivo
Então
Altere a tabela e defina o campo como não nulo e especifique um valor padrão de 0
fonte
isso parece mais simples, mas funciona apenas no Oracle:
Além disso, com isso, você também pode adicionar colunas, não apenas alterá-lo. Ele atualiza para o valor padrão (0) neste exemplo, se o valor for nulo.
fonte
No caso de
FOREIGN KEY CONSTRAINT
... haverá um problema se '0' não estiver presente na coluna da tabela Chave Primária. A solução para isso é ...PASSO 1:
Desative todas as restrições usando este código:
PASSO 2:
ETAPA 3:
Habilite todas as restrições usando este código:
fonte
No meu caso, tive dificuldades com as respostas postadas. Acabei usando o seguinte:
mudança
VARCHAR(200)
para o seu tipo de dados e, opcionalmente, altere o valor padrão.Se você não tiver um valor padrão, terá um problema ao fazer essa alteração, pois o padrão seria nulo criando um conflito.
fonte
Vamos dar um exemplo:
E eu quero mudar a coluna
EMPLOYEE_NAME
paraNOT NULL
. Esta consulta pode ser usada para a tarefa:fonte
Para o javaDB embutido incluído no JDK (distribuição suportada pelo Oracle do Apache Derby), o abaixo funcionou para mim
fonte
Tornar a coluna não nula e adicionar padrão também pode ser feita na GUI do SSMS.
UPDATE myTable SET myColumn = 0
fonte
Você pode alterar a definição da coluna do banco de dados existente usando o seguinte sql.
fonte