No SQL Server, tenho uma nova coluna em uma tabela:
ALTER TABLE t_tableName
ADD newColumn NOT NULL
Isso falha porque eu especifico NOT NULL sem especificar uma restrição padrão. A tabela não deve ter uma restrição padrão.
Para contornar isso, eu poderia criar a tabela com a restrição padrão e removê-la.
No entanto, não parece haver nenhuma maneira de especificar que a restrição padrão deve ser nomeada como parte dessa declaração, portanto, minha única maneira de me livrar dela é ter um procedimento armazenado que a procure nos sys.default_constraints tabela.
Isso é um pouco confuso / detalhado para uma operação que provavelmente acontecerá muito. Alguém tem alguma solução melhor para isso?
NOT NULL
adjacente ao tipo de dados? Pode ser sintaticamente válido colocá-lo após a restrição, mas parece confuso colocá-lo lá.fonte
Gostaria de adicionar alguns detalhes, pois as respostas existentes são bastante finas :
A dica mais importante é: você nunca deve criar uma restrição sem um nome explícito!
O maior problema com restrições não nomeadas : Quando você executa isso em várias máquinas clientes, você obtém nomes diferentes / aleatórios em cada uma.
Qualquer script de atualização futura será uma verdadeira dor de cabeça ...
O conselho geral é:
DF_TableName_ColumnName
para uma restrição padrãoCK_TableName_ColumnName
para uma restrição de verificaçãoUQ_TableName_ColumnName
para uma restrição únicaPK_TableName
para uma restrição de chave primáriaA sintaxe geral é
Tente isso aqui
Você pode adicionar mais restrições a cada coluna e adicionar restrições adicionais, assim como adiciona colunas após uma vírgula:
- insira alguns dados
fonte
Tente como abaixo do script-
fonte