Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vanessa1

Coluna bit, como defino um valor default?

Recommended Posts

Colegas,

 

Defini uma coluna assim:

 

formPJ bit not null default (0), mas não funciona. Qaundo envio um valor null, o banco reclama de que não pode aceitar um valor null.

 

Estou fazendo algo errado?

 

Grata,

Vanessa

 

 

Eis o erro:

Server: Msg 515, Level 16, State 2, Line 1

Cannot insert the value NULL into column 'formPJ', table 'BasePrincipal.dbo.tbfuncionarios'; column does not allow nulls. INSERT fails.

The statement has been terminated.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vanessa,

 

Você especificou que o valor não pode ser nulo, mas você esta tentando inserir um valor nulo mesmo assim. Esta infringindo uma regra que você mesmo criou.

 

Use DEFAULT invés de NULL no seu comando INSERT.

 

http://msdn.microsoft.com/pt-br/library/ms174335.aspx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vanessa,

 

Você especificou que o valor não pode ser nulo, mas você esta tentando inserir um valor nulo mesmo assim. Esta infringindo uma regra que você mesmo criou.

 

Use DEFAULT invés de NULL no seu comando INSERT.

 

http://msdn.microsoft.com/pt-br/library/ms174335.aspx

 

Agradeço,

 

Não estou infringindo, veja: formPJ bit not null default (0), estou dizendo que o não deve aceitar null e jogando valor 0 (zero) se houver um balor null. Ou seja, de acordo com a regra.

 

vanessa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colegas,

 

A minha inteção e definir o valor como 0 se o valor que estiver sendo inserido for null.

 

Obs. estou usando o sql server 2000.

 

Grata,

Vanessa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vanessa,

 

Se você diz que um campo não pode ser NULO, você não pode inserir um valor NULO! :)

 

Em qual livro você leu que se você inserir um valor NULO ele vai gravar o valor definido por DEFAULT?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vanessa,

 

Se você diz que um campo não pode ser NULO, você não pode inserir um valor NULO! :)

 

Em qual livro você leu que se você inserir um valor NULO ele vai gravar o valor definido por DEFAULT?

 

Caro,

 

Me parece que a confusão está sendo sua, veja que coloquei default (0), desde quando 0 é null?

 

Livro Desvendando o Sql Server, autor Ron Soukup (este autor é nada menos do que Gerente de Desenvolvimento do Sql Server),

pag. 378, 379

 

Veja o exemplo dele: country varchar(30) not null default('USA').

 

É isso.

Vanessa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então ta bom... :D

 

Vai outro questionamento:

Em que parte do livro ele escreve que se você inserir NULL vai gravar o valor de DEFAULT?

 

Outra coisa:

Me parece que a confusão está sendo sua, veja que coloquei default (0), desde quando 0 é null?

Desde quando NULL é DEFAULT?

 

NULL é um valor como outro qualquer, ou se preferir, a ausência dele. Se num comando INSERT você especifica que vai inserir NULL, ele vai inserir NULL e, no seu caso, como esta NOT NULL, vai gerar "erro" no comando. Não é pelo fato de haver um valor definido como DEFAULT que ele vai pegar onde é NULL e jogar este valor DEFAULT.

 

Se preferir, podemos aguardar por uma segunda opinião... ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prog,

 

você tem razão. Uma leitura mais devagar me confirmou isso.

Diz o autor: Se uma coluna for declarada para permitir null e também tiver um padrão associado a ela, a omissão total da coluna na instrução Insert resulta na inserção do valor padrão e não do valor null. (Isso também ocorre se a coluna for declarada not null).

 

A palavra chave aí é omissão (só se eu omitisse a coluna seria inserido o valor padrão).

 

Pelo que vejo, terei que fazer o que quero na aplicação. Que pena!

 

Tchau

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Da pra fazer via Trigger também, caso queira fazer a regra de negócio no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não tem que passar NULL, você tem que ou não passar NADA para esse campo no comando de insert ou update ou passar a palavra 'default' mesmo.

 

Exemplo para criar o default de forma mais elegante:

Create Default DF_0 As 0

Agora você tem para todo seu banco o DF_0, agora:

Exec sp_bindefault DF_0, 'TABELA.CAMPO'

 

[]tz ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.